簡體   English   中英

用破折號替換所有空格,但不要重音字符-PHP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM