亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將單引號與 preg_match 和 filter_var() 函數一起使用時出現問題

將單引號與 preg_match 和 filter_var() 函數一起使用時出現問題

PHP
隔江千里 2023-09-08 21:52:39
我遇到了 filter_var()、preg_match() 和單引號的問題。我正在嘗試清理和驗證非法字符的姓氏。它幾乎適用于所有內容,但顯然姓氏中包含單引號(例如 O'Corner)會導致錯誤。我的意思是 $errors[] = '姓氏中請僅使用字母、句號、破折號和空格。'; 每當我在用戶輸入字段中使用單引號時就會執行。HTML 代碼:<input type="text" class="form-control" name="last_name" id="last_name" placeholder="Enter last name" maxlength="40" required value="<?php if (isset($_POST['last_name'])) { echo htmlspecialchars($_POST['last_name'], ENT_QUOTES); } ?>" title="Alphabets, quotes, dash, spaces and max 40 characters" pattern="^[a-zA-Z][a-zA-Z' -]*$">PHP代碼:$lname = filter_var($_POST['last_name'], FILTER_SANITIZE_STRING);if (!empty($lname)) {    if (!preg_match("/^[a-zA-Z][a-zA-Z' -]*$/", $lname)) {        $errors[] = 'Please use only alphabets, period, dash and spaces in last name.';    } else if (strlen($lname) > 40) {        $errors[] = 'last name should not exceed 40 characters';    } else {        $lname = trim($lname);    }} else {    $errors[] = 'Please enter your last name.';}我嘗試用反斜杠轉義正則表達式中的單引號。但這沒有用。如果我替換$lname = filter_var($_POST['last_name'], FILTER_SANITIZE_STRING);它$lname = $_POST['lname'];效果很好。但我仍然不確定使用包含單引號和 $lname = filter_var($_POST['last_name'], FILTER_SANITIZE_STRING); 的字符串有什么問題 使用 preg_match() 方法。有人可以幫助我嗎?先感謝您。
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您的問題來自于對 filter_var 函數的特定調用正在將單引號 ' 編碼到 html 實體 ' 中。

如果您在瀏覽器中打印 $lname 變量,它將呈現為常規單引號,但在其源代碼中它不會是引號,而是提到的 html 實體。


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號