我最近使用了一種模式來替換雙/雙引號的雙引號。preg_match_all:除html標記外,在引號內部獲取文本
$string = preg_replace('/(\")([^\"]+)(\")/','「$2」',$string);
當$ string是句子,甚至是段落時,它工作正常。
但是......
我的函數可以調用到工作的HTML代碼塊,並且它不工作爲例外了:
$string = preg_replace('/(\")([^\"]+)(\")/','「$2」','<a href="page.html">Something "with" quotes</a>');
回報
<a href=「page.html」>Something 「with」 quotes</a>
而且這是一個問題...
所以我認爲我可以做到兩遍:提取文本w ithin標籤,然後替換引號。
我想這
$pattern='/<[^>]+>(.*)<\/[^>]+>/';
而且它的工作原理例如,如果字符串是
$string='<a href="page.html">Something "with" quotes</a>';
但它不與像字符串:
$string='Something "with" quotes <a href="page.html">Something "with" quotes</a>';
任何想法?
伯特蘭
[小馬HE COMES](HTTP ://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –
@Kolink我知道這會出現。這就是爲什麼我會建議使用simplexml,只將其應用於文本而不應用於屬性。 – Christoph
我必須「清理」的字符串是90%的案例中的文本字段的值,並且在某些情況下,您可以在內部使用「代碼」。這就是解析不合適的原因。 –