我需要刪除除破折號,字母,數字,空格和下劃線之外的字符串中的所有字符。preg_replace刪除除破折號,字母,數字,空格和下劃線之外的所有字符
關於SO的各種答案非常貼切地關閉(Replace all characters except letters, numbers, spaces and underscores,Remove all characters except letters, spaces and apostrophes等),但通常不包括破折號。
幫助將不勝感激。
我需要刪除除破折號,字母,數字,空格和下劃線之外的字符串中的所有字符。preg_replace刪除除破折號,字母,數字,空格和下劃線之外的所有字符
關於SO的各種答案非常貼切地關閉(Replace all characters except letters, numbers, spaces and underscores,Remove all characters except letters, spaces and apostrophes等),但通常不包括破折號。
幫助將不勝感激。
你可以這樣做如下:
$string = ';")<br>kk23how nowbrowncow_-asdjhajsdhasdk32423ASDASD*%[email protected]#!^ASDASDSA4sadfasd_-?!';
$new_string = preg_replace('/[^ \w-]/', '', $string);
echo $new_string;
[^]
表示list of characters NOT to match\w
是一個short爲字字符[A-Za-z0-9_]
-
連字符匹配字面上做了一些編輯,請檢查。如何將「+」量詞附加到一個或多個類上。 –
你可能需要類似:
$new = preg_replace('/[^ \w-]/', '', $old);
說明:
[^ \w-]
Match any single character NOT present in the list below «[^ \w-]»
The literal character 「 」 « »
A 「word character」 (Unicode; any letter or ideograph, any number, underscore) «\w»
The literal character 「-」 «-»
我認爲這不佔空間。 – cosmoonot
注意和糾正,tks –
你接受了,他說將刪除空格。你需要的是'preg_replace('/ [^ \ s \ w - ] /','',$ old);'如果你使用Unicode,'/ [^ \ s \ w \ p {M} \ p {Pd}]/u''(其中'\ p {Pd}'是任何破折號)。 –
@WiktorStribiżew我已經使用它幾個小時了,它可以很好地處理空格。 –
好的,但問題不匹配答案。 –