2011-10-25 223 views
0

我正在用這個正則表達式掙扎。preg_replace煩惱

$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

嗨Benji,謝謝你的迴應。事實證明,在我的調試過程中,我無意中忘記了我在腳本中複製了代碼。結果表明它一直在工作,但是由於它正在啓動兩次,所以輸出錯誤。另一個原因是,深夜麻煩拍攝是一個糟糕的主意!再次感謝你的幫助! – Simon