2017-04-14 14 views
0

ダッシュ、文字、数字、スペース、アンダースコア以外の文字列のすべての文字を削除する必要があります。ダッシュ、文字、数字、スペース、およびアンダースコアを除くすべての文字を削除するpreg_replace

だからこそ、さまざまな回答が結構ありますが(Replace all characters except letters, numbers, spaces and underscoresRemove all characters except letters, spaces and apostrophesなど)、一般的にダッシュは含まれていません。

助けていただければ幸いです。

$new = preg_replace('/[^ \w-]/', '', $old); 

説明

+0

ハイフンにマッチしています空白が削除されます。あなたが必要とするのは、 'preg_replace( '/ [^ \ s \ w - ] /'、 ''、$ old);であり、Unicodeを使っているなら'/[^ \ s \ w \ p {M} \ p {Pd}]/u''( '\ p {Pd}'はダッシュである)。 –

+0

@WiktorStribiżew私はこれを数時間使用していますが、スペースでうまく動作します。 –

+0

[OK]をクリックしますが、質問に答えが一致しません。 –

答えて

3

ます以下のような何かができます:

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

少し編集しましたか、確認してください。どのように '+'量子を1つ以上のクラスに付け加えるのですか? –

2

は、おそらくのようなものを必要とし

[^ \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 –

関連する問題