2017-01-18 17 views
1

我有很多段落的長文本。我需要搜索文本被引號括起來的所有實例,所以「...」,並用&「...」替換它; ... & rdquo ;.搜索由雙引號括起來並轉換爲HTML實體的文本

我也想檢測一個報價是否缺少一個結束報價,而不是明顯地將其轉換。

這是我能想出現在最好的:

$text = preg_replace('/(?<=\s)"(.+?)"(?=\s)/', '&ldquo;\1&rdquo;', $text); 

但不能肯定是否可以覆蓋所有的情況。任何其他建議,將不勝感激。

回答

1

我沒有看到任何客觀的標準來選擇雙引號是開頭還是結束引號,除非可能在開始引用之前或「正常」文本中的結尾引號之後沒有單詞字符。

你可以試着這樣做:

$text = preg_replace('/\B"([^"]*)"\B/u', '&ldquo;$1&rdquo;', $text); 
if (strrpos($text, '"') !== false) 
    $text = rtrim(str_replace('"', '&ldquo;', $text)) . '&rdquo;'; 
+0

謝謝,正則表達式完美。 – devbanana

相關問題