2011-10-25 7 views
0

私はこの正規表現に苦労しています。preg_replace troubleles

$glossary_search[] = "/(^|>|\\s)".$glossary["glossary_name"]."($|<|\\s)/i"; 
$glossary_replace[] = "\$1<a href='/jargon-buster/".tapestry_hyphenate($glossary["glossary_name"]).".html' title='".$glossary["glossary_name"]."' target='_blank'>".$glossary["glossary_name"]."</a>\$2"; 

return preg_replace($glossary_search,$glossary_replace,$text); 

ハイパーリンクを使用して商品説明の単語を置き換えようとしています。上記のコードは、単語にスペースがある場合は機能しますが、フルストップ、カンマまたは「<」がある場合は機能しません。誰も私の間違いを見つけられますか?

おかげで、 サイモン

+0

簡単な入力行と出力を提供できますか? – FailedDev

答えて

0

私はあなたがpreg_quotehtmlentitiesを使用する必要があるかもしれないと思いますか?

$glossary_search[] = "/(^|>|\\s)".preg_quote(htmlentities($glossary["glossary_name"],ENT_COMPAT,'UTF8'))."($|<|\\s)/i"; 
$glossary_replace[] = "\$1<a href='/jargon-buster/".tapestry_hyphenate($glossary["glossary_name"]).".html' title='".$glossary["glossary_name"]."' target='_blank'>".$glossary["glossary_name"]."</a>\$2"; 

return preg_replace($glossary_search,$glossary_replace,$text); 
+0

こんにちはBenjie、ありがとうございました。それは動作しますが、元のコードと同じ程度です。単語の直後に何かが現れると、それは動作しません。それは自分自身であり、それは完全に動作します。 – Simon

+0

$ glossary変数と、動作しない$ text変数の例を挙げることができますか? – Benjie

+0

こんにちはベンジ、お返事ありがとうございます。デバッグ中にスクリプト内にコードが重複していることを間違って忘れてしまったことが判明しました。それは二度と起きていたので間違った結果を出していたことがわかった。夜遅く撮影するのが悪い考えであるもう一つの理由!あなたの助けをもう一度ありがとう! – Simon