在寻找如何用卷曲引号替换文本块中的常规引号,而不是更改html标记标记<....>中发现的引号的最佳解决方案,我曾尝试使用preg- replace,例如:
$pattern = '/(?<!=)"\b/';
$lyrics = preg_replace($pattern, "\u201c", $lyrics);
$pattern = '/\b"(?!>)/';
$lyrics = preg_replace($pattern, "\u201d", $lyrics);
$pattern = '/\."/'; // find regular quotes after a period
$lyrics = preg_replace($pattern, ".\u201d", $lyrics);
$pattern = '/\!"/'; // find regular quotes after an exclamation
$lyrics = preg_replace($pattern, "!\u201d", $lyrics);
$pattern = '/"\s/'; // find regular quotes before a space
$lyrics = preg_replace($pattern, "\u201d ", $lyrics);例如,如果我有以下内容:
<a href="http://somelink.com">"This is a quotation."我希望它以如下方式结束:
<a href="http://somelink.com">“This is a quotation.”发布于 2012-04-16 23:46:17
使用允许您轻松访问文本节点的HTML解析器。正则表达式是满足您需要的not really suitable。
发布于 2012-04-16 23:51:27
如果格式正确,您甚至可以使用xml解析器。但您需要先打开和关闭所有标记(或者以这种方式关闭一些标记:< /br> )。然后,您可以像常规xml一样使用parse the xhtml with php。
编辑:可能是Highlight text, except html tags的副本
https://stackoverflow.com/questions/10177315
复制相似问题