2011-02-09 10 views

答えて

2

は、試合前や後にはダッシュがない場合、一致のみが許可されているように、これは正規表現の開始と終了にnegative lookaround式を追加し

return preg_replace('/(?<!-)\b('.implode('|',$commonWords).')\b(?!-)/i','',$input); 

を試してみてください。任意の単語文字ワット\

+0

高度な機能がない別のアイデアは、/([^ - ] | ^)( 'implode(' | '、$ commonWords)')([^ - ] | $)/ i'です。 '$ 1'で置き換えて結果の文字列をトリミングします。 – erisco

+0

おかげでティムはまさに私が探していたことに感謝しました - 治療をしました – atomicjeep

0
preg_replace('/\b('.implode('|',$commonWords).'|\w-\w)\b/i','',$input); 

(文字、数字、アンダースコア) 、それはすべてのすべてのcommonwordsを削除し、hypheneをしたすべての単語ます。

+2

彼は無視したいと思う、 e。 *ハイフネーションされた単語を削除しない*。 (これは '\ w'の代わりに' \ w + 'を使用しなければなりません) –

+0

しかし、あなたが削除したいと思っているハイフンを普通の単語に含めるのが最良でしょう。重要かもしれないハイフン付きの言葉。あなたはテキストサンプル全体を検索し、どのサンプルがOKでないかを見ることができます。 – Cedric

0
return preg_replace('/(?<![-\'"])\b('.implode('|',$commonWords).')\b(?![-'"])i','',$input); 

エスケープする記号がさらにある場合は、上記のように動作します。

関連する問題