2016-10-17 2 views
0

この類似したトピックに関する他の質問を見て、それらの提案を試しましたが、動作していないようです。PHP 5.5 preg_replace nullを返すパターンの配列を使用

これは私のコードです:

<?php 

$badChars = array('/</', '/>/', '/$/', '/\\/', '/=/', '/@/', '/\//'); 

$cleanData = "Text -with /stuff I [email protected]'t want"; 

echo $cleanData . "\n"; 

$cleanData = preg_replace($badChars, '', $cleanData); 

echo $cleanData . "\n"; 

?> 

注パターンの配列は、シナリオに基づいて変化すること。これはデータクレンジングのためのものです。たとえば、電子メールフィールドを処理する場合は、@パターンを一時的に削除します。

そして、これが出力されます:

Text -with /stuff I [email protected]'t want 

PHP Warning: preg_replace(): No ending delimiter '/' found in /home/tim/xm_code/symphony/code/components/controllers/test.php on line 9 

Process finished with exit code 0 

私は私がこの問題を解決するのに役立つ何かを見つけることができません。何か案は?

+0

@ chris85 - 私はシナリオに応じてパターンの配列から要素を削除または追加できるようにする必要があります。 – Tim

+0

さらに高度な処理をしてから1文字を置き換えない限り、 'str_replace'を使用できるはずです。例えばあなたはあなたがそれに欲しいものを削除/追加するだけで同じ置換配列を持つでしょう。 – chris85

答えて

1

二重バックスラッシュが閉じ区切り文字をエスケープしています。だから、

'/\\/' 

'/\\\/' 

が代わりに文字クラスを使用して、配列を必要としないことが必要です。 2番目の選択肢は、文字がすべて静的なのでstr_replaceを使用します。

$badChars = array('<', '>', '$', '\\', '=', '@', '/'); 
$cleanData = "Text -with /stuff I [email protected]'t want"; 
echo $cleanData . "\n"; 
$cleanData = str_replace($badChars, '', $cleanData); 
関連する問題