2011-12-04 9 views
2

文字列内の特定の文字を削除する方法は知っていますが、次の点についてはわかりません:php特定の文字の間の文字を削除します。

文字列:Code

が、このことが可能です:Code [7845] [5589] [554] [4]

私はそれらの間のすべての[]のインスタンスとすべてのものを削除する必要があり、そのように私は単純で終わる空白をトリミング?

+0

これまでに何を試しましたか?確実に可能であり、単純な表現だけが必要です。 –

答えて

1

は、次のことを試してください。

$str = trim(preg_replace('/\[\d+\]/', '', 'your_string_here')); 

関数の最初の引数は正規表現です。 \dと一致する数字が表示され、それに続く+には少なくとも1つの数字と一致する必要があります。 preg_replaceの詳細はCheck hereを参照してください。 Regexの詳細については、Check hereを参照してください。

+0

空白を削除しません。 – FailedDev

+0

@FailedDev、yepが答えを編集しました。 –

5

これはそれを行うだろう:)

$result = preg_replace('/\[.*?\]|\s*/', '', $subject); 

を説明:@Felixが指摘するように

" 
\[ # Match the character “[” literally 
.  # Match any single character that is not a line break character 
    * # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
\] # Match the character “]” literally 
" 

これはかなり簡単表現です。あなたはhereを見て、あなたが使うことができる様々なテクニックに慣れるようにしてください。

+1

+1実用的な答え! – nickb

+0

これはこの[12as]でも削除されます。彼は数値だけを求めます:) –

+0

@SavasVedova私のEnglshが私を裏切らない限り、*間のすべて*はすべてを意味します。 – FailedDev

1

要件に関する詳細を提供する必要があります。

$s = 'Code [7845] [5589] [554] [4]'; 

を文字列は常にあなたが後にしているもので始まり、残りは常に破棄することができるならば、これはおそらく最も効率的である:

$s = trim(substr($s, 0, strpos($s, '['))); 

あなたならばと仮定すると、

元の文字列を保持し、数字のグループのみを削除したい場合:

$s = trim(preg_replace('/\[\d+\]/', '', $s)); 
関連する問題