2017-01-18 22 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

相关问题