首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:替换字符串中的双引号,但不替换HTML标记中的双引号

PHP:替换字符串中的双引号,但不替换HTML标记中的双引号
EN

Stack Overflow用户
提问于 2012-04-16 23:43:33
回答 2查看 859关注 0票数 1

在寻找如何用卷曲引号替换文本块中的常规引号,而不是更改html标记标记<....>中发现的引号的最佳解决方案,我曾尝试使用preg- replace,例如:

代码语言:javascript
复制
$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);

例如,如果我有以下内容:

代码语言:javascript
复制
<a href="http://somelink.com">"This is a quotation."

我希望它以如下方式结束:

代码语言:javascript
复制
<a href="http://somelink.com">“This is a quotation.”
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 23:46:17

使用允许您轻松访问文本节点的HTML解析器。正则表达式是满足您需要的not really suitable

票数 1
EN

Stack Overflow用户

发布于 2012-04-16 23:51:27

如果格式正确,您甚至可以使用xml解析器。但您需要先打开和关闭所有标记(或者以这种方式关闭一些标记:< /br> )。然后,您可以像常规xml一样使用parse the xhtml with php

编辑:可能是Highlight text, except html tags的副本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10177315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档