[英]PHP remove everything except letters and a hyphen (-)
我正在制作一個表格,詢問用戶的名字和姓氏,我不希望他們進入
$heil4
我希望他們進入
Sheila
我知道如何過濾掉除字母以外的所有內容,但我知道有些名字可以有
Sheila-McDonald
那么除了字母和連字符之外,我如何從字符串中刪除所有內容?
簡單地使用
$s = preg_replace("/[^a-z-]/i", "", $s);
或者如果你想將一些非ascii字符轉換為ascii,例如Jean-Rémy
到Jean-Remy
,那么請使用
$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s));
$new = preg_replace('#[^AZ-]#iu', '', $data);
但不是刪除字母(從而修改用戶的輸入),而是更好地驗證它並在輸入無效時顯示錯誤。 通過這種方式,用戶將知道他輸入的內容正是您擁有的價值
if(!preg_match('#[AZ-]#iu', $data)) echo 'invalid';
而不是替換任何東西,有一些樂趣。 這樣一個名字主要包含你可以解碼的數字; p
$name = '$h3il4-McD0nald';
$find = array(0,1,3,4,5,6,7,'$');
$replace = array('o','l','e','a','s','g','t','s');
$name = str_replace($find,$replace,$name);
//Sheila-McDonald
echo ucfirst(preg_replace('/[^a-z-]/i', '', $name));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.