2017-04-14 135 views
0

我需要刪除除破折號,字母,數字,空格和下劃線之外的字符串中的所有字符。preg_replace刪除除破折號,字母,數字,空格和下劃線之外的所有字符

關於SO的各種答案非常貼切地關閉(Replace all characters except letters, numbers, spaces and underscoresRemove all characters except letters, spaces and apostrophes等),但通常不包括破折號。

幫助將不勝感激。

+0

你接受了,他說將刪除空格。你需要的是'preg_replace('/ [^ \ s \ w - ] /','',$ old);'如果你使用Unicode,'/ [^ \ s \ w \ p {M} \ p {Pd}]/u''(其中'\ p {Pd}'是任何破折號)。 –

+0

@WiktorStribiżew我已經使用它幾個小時了,它可以很好地處理空格。 –

+0

好的,但問題不匹配答案。 –

回答

3

你可以這樣做如下:

$string = ';")<br>kk23how nowbrowncow_-asdjhajsdhasdk32423ASDASD*%[email protected]#!^ASDASDSA4sadfasd_-?!'; 
    $new_string = preg_replace('/[^ \w-]/', '', $string); 
    echo $new_string; 
+1

做了一些編輯,請檢查。如何將「+」量詞附加到一個或多個類上。 –

2

你可能需要類似:

$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 「-」 «-» 

Demo

+1

我認爲這不佔空間。 – cosmoonot

+1

注意和糾正,tks –

相關問題