寻找有关如何使用弯引号替换文本块中的常规引号但不更改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.”
答案 0 :(得分:1)
使用HTML解析器,您可以轻松访问文本节点。正则表达式not really suitable可满足您的需求。
答案 1 :(得分:0)
如果它正确形成,你甚至可以使用xml解析器。但是你需要首先打开和关闭所有标签(或者以这种方式打开一些标签:< /br>
)。然后,您可以parse the xhtml with php作为常规xml。