[英]Replace all spaces with dashes, but not accents characters - PHP
我想用破折號代替空格,但是代碼也用破折號代替了重音符號:
$username = preg_replace("![^a-Z0-9]+!i", "-", $username);
如何保留帶有重音符號的字母而不是破折號?
如果僅更改空格,請在RegEx中嘗試匹配空格。
$username = preg_replace("![ ]+!i", "-", $username);
我還建議不要使用不轉義的\\
字符-它們習慣在PHP字符串(使用雙引號)和RegEx中都有意義。
另外, \\w
將匹配任何單詞字符, \\d
將匹配任何數字,因此![^\\w\\d]+!iu
將匹配任何非字母數字的字符。
$username = preg_replace('![^\\w\\d]+!iu', '-', $username);
注意, i
使它不區分大小寫, u
使它成為Unicode安全。
例:
echo preg_replace('![^\\w\\d\\\\]+!iu', '-', 'this is a testé');
輸出this-is-a-testé
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.