Re: [請益] php 讀取特殊字元:
※ 引述《andysleep (Maydayisgod)》之銘言:
: 由於input欄位是姓名所以中英可以接受
: 但是要怎麼過濾其他符號呢?
: 有沒有其他方法
: 謝謝大家
剛好不久以前才有人問過類似的問題
只要你的php版本不太舊(應該是5.4就可以),可以用preg_match()
用\w配合u選項就可以match正常的中英文姓名字元組合
php > function filter($s) {
preg_match('/[\w ]+/u', $s, $m);
print_r($m);
}
php > filter('鄭余鎮C:\windows\etc\');
Array
(
[0] => 鄭余鎮C
)
php > filter('王筱蟬; drop table students');
Array
(
[0] => 王筱蟬
)
php > filter('james bond');
Array
(
[0] => james bond
)
\w表示一般的「文字」字元,包括大小寫英文字母和底線
加上尾巴的u,表示unicode, 就會包括中文字(應該也包括其他語言的字母)
[\w ]中間空一格,那就是空白的意思,整包表示文字字元或空白
不加空白上面的james bond就無法全部match到,只會得到james
[\w ]+表示上面的組合出現一次或以上
例如鄭余鎮那個例子,前面四個字元合乎規則
到:的時候不符合規則,所以中斷,剩下"鄭余鎮C"
在php端過濾人名字元,這就很夠用了
但是這只是防攻擊手段的其中一環
其他還包括前端javascript過濾、資料庫使用escape和prepared statement等
--
從前有個馬鈴薯王國 有個高貴偉大的國王
有的人尊敬他 有的人畏懼他 但有個人敢看不起他不只是一條龍
嘿呵 快出動 去征服 去擺平 嘿呵 快出征 去征服那條龍
嘿呵 快出動(宰了它!轟了它!)嘿呵 快出征 去征服那條龍
:■ Potatoes and Dragons (C)Alphanim France 2004-05 :.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.110.133
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1484708540.A.CF0.html
推
01/18 11:19, , 1F
01/18 11:19, 1F
推
01/18 12:45, , 2F
01/18 12:45, 2F
→
01/18 13:07, , 3F
01/18 13:07, 3F
→
01/18 13:48, , 4F
01/18 13:48, 4F
→
01/18 13:49, , 5F
01/18 13:49, 5F
→
01/18 14:01, , 6F
01/18 14:01, 6F
→
01/18 14:01, , 7F
01/18 14:01, 7F
→
01/18 14:05, , 8F
01/18 14:05, 8F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章