替换 html 标签中没有的所有引号

2024-01-23

目前我正在用特殊引号替换文本中的所有引号。 但是我如何更改我的正则表达式,只替换文本中的引号,而不替换 html 标记中使用的引号。

$text = preg_replace('/"(?=\w)/', "»", $text);
$text = preg_replace('/(?<=\w)"/', "&laquo;", $text);

我不太适合正则表达式。问题是我需要用另一个符号替换起始引号而不是结束引号。

如果您确实需要更多信息,请说出来。

任何帮助表示赞赏!

EDIT

测试用例

<p>This is a "wonderful long text". At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>

预期输出应该是:

<p>This is a &raquo;wonderful long text&laquo;. At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>

现在是这样的:

<p>This is a &raquo;wonderful long text&laquo;. At least it should be. Here we have a <a href=&raquo;http://wwww.site-to-nowhere.com&laquo; target=&raquo;_blank&laquo;>link</a>.</p>

EDIT 2

感谢 Kamehameha 的回答,我已将以下代码添加到我的脚本中:

$text = preg_replace("/\"([^<>]*?)\"(?=[^>]+?<)/", "&raquo;\1&laquo;", $text);

在正则表达式测试器中有效的东西并不能取代任何东西。我做错了什么吗?


该正则表达式适用于给定的字符串。

Search for   - "([^<>]*?)"(?=[^>]*?<)
Replace with - &raquo;\1&laquo;

Demo here http://regex101.com/r/uD4tK6
测试它 -

INPUT - 
<p>This is a "wonderful long text". "Another wonderful ong text" At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>

OUTPUT - 
<p>This is a &raquo;wonderful long text&laquo;. &raquo;Another wonderful ong text&laquo; At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>

EDIT 1-
在 PHP 中执行此操作 -

$str = '<p>This is a "wonderful long text". "Another wonderful ong text" At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>';
var_dump(preg_replace('/"([^<>]*?)"(?=[^>]*?<)/', '&raquo;\1&laquo', $str));

它的输出 -

/** OUTPUT **/
string '<p>This is a &raquo;wonderful long text&laquo. &raquo;Another wonderful ong text&laquo At least it should be. Here we have a <a href="http://wwww.site-to-nowhere.com" target="_blank">link</a>.</p>' (length=196)

EDIT 2-
您已执行了preg_replace功能正常,但在替换字符串中,您在双引号 ("") 内使用了 \1。这样做,你就逃避了 1 本身,并且它不会被替换。
为了更清楚地说明这一点,尝试一下,看看会发生什么 -

echo '&raquo;\1&laquo;';
echo "&raquo;\1&laquo;";

第二个 \1 不应该是可见的。
所以解决方案是其中之一 -

preg_replace('/"([^<>]*?)"(?=[^>]*?<)/', '&raquo;\1&laquo;', $str)
preg_replace("/\"([^<>]*?)\"(?=[^>]*?<)/", "&raquo;\\1&laquo;", $str)
preg_replace("/\"([^<>]*?)\"(?=[^>]*?<)/", "&raquo;$1&laquo;", $str)

阅读中的替换部分这一页 https://www.php.net/preg_replace为了更清楚。

EDIT 3-
包含可能未包含在标签内的文本的正则表达式 -

\"([^<>]*?)\"(?=(?:[^>]*?(?:<|$)))

Demo here http://regex101.com/r/xT0vZ1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换 html 标签中没有的所有引号 的相关文章

  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 我可以使用 jQuery 打开下拉列表吗

    对于 HTML 中的下拉列表
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 无效字符错误:“fred”

    我确信他一定是一个新手问题 简单来说 我想定义我的第一个 Polymer dart 组件 只是我一直在同一个减速带上踢脚趾 为了使事情变得非常简单 我将其简化为一个非常简单的示例 我做了一个简单的rename示例 跑表 来自 Dart 组件
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 为什么 cin 将我的双精度输入转换为整数? C++

    我有以下代码 int variable 1 variable 2 cout lt lt Please enter the 2 numbers try if cin gt gt variable 1 throw Invalid number
  • CriteriaBuilder. 和 & CriteriaBuilder.or,如何操作?

    我正在尝试更改以下 HQL 以使用 JPA Criteria select distinct d from Department d left join fetch d children c where d parent is null a
  • 如何告诉 Visual Studio 不要填充设计器代码中的字段?

    我有一个自定义控件 当我将其拖到表单上时 会创建以下 Designer cs 代码 colorPickerBackground this colorPickerBackground Color Color Empty this colorP
  • 主线程上的 Okhttp 响应回调

    我创建了一个帮助程序类来处理我的应用程序中的所有 http 调用 它是 okhttp 的一个简单的单例包装器 如下所示 我省略了一些不重要的部分 public class HttpUtil private OkHttpClient clie
  • 在RelativeLayout中获取子视图

    我想在我的活动中添加一个按钮 该按钮将返回相对布局的所有子视图 如何获取相对布局视图的所有子视图 RelativeLayout延伸ViewGroup其中有getChildCount and getChildAt int index 方法 所
  • 使用命令行编译 C++ 代码

    我使用下面的命令来编译我的 C 代码 它使用 OpenCV 库 我的命令就像 opencv main cpp o binary name 其中 opencv 是一个别名命令 例如 alias opencv g pkg config cfla
  • 使用 YoutubeURL 获取 oembed 返回 403 Forbidden

    这几天 我突然收到来自 403 Forbidden 的回复https www youtube com oembed url youtubeURl 我检查了Youtube API的文档 但我找不到它对oembed有限制并且也有授权 我只能看到
  • 在 bash 中将 HH:MM:SS.mm 转换为秒

    我正在运行一些 gnu 时间脚本 它们会生成以下形式的输出 mm ss mm 分 秒和毫秒 例如 1 20 66 或 hh MM ss 小时 分钟和秒 例如 1 43 38 我想将其转换为秒 以便比较它们并将它们绘制在图形中 使用 bash
  • Silverlight:如何在代码后面更改AxisLabelStyle?

    在 xaml 文件中 我们可以通过执行以下操作来更改 AxisLabelStyle
  • Java Servlet API 向后兼容吗?

    我想编写一个使用 javax servlet API 的 JAR 文件 如果我针对 2 2 版本编写 是否意味着它可以在 2 3 2 4 和 2 5 版本上工作 Thanks 是的 它们是向后兼容的 甲骨文来源 http docs orac
  • 面向对象设计实践问题[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 过去几年我几乎只开发 C 代码 我目前正在寻求提高我的面向对象设计技能 任何人都可以推荐任何包含一系列简
  • 如何在 Kerberos 中“取消模拟”(取消委托?)

    我有一个使用 Kerberos 的 Web 应用程序来使用 ASP NET 3 5 和 IIS 访问外部资源 当用户连接到应用程序时 Kerberos 身份验证会自动允许我使用委派作为用户连接到外部资源 这并不容易做到 这很好 但我有一个问
  • .net 正则表达式用于超过 2 个连续字母

    我正在尝试为 2 个以上的连续字母编写 Net 正则表达式 aa fine Aa fine aaa not allowed Aaa not allowed 我是正则表达式的新手 但这是我到目前为止所拼凑的 if Regex IsMatch
  • uwp命令栏始终显示标签

    Answer 谢谢贾斯汀XL https stackoverflow com users 231837 justin xl我能够解决我的问题 我实现了他在下面的回答中提供的样式 并按照他的说法在 App xaml 中添加了这一点 我将高度更
  • 在 Android 上点击后退按钮时关闭应用程序

    所以我的登录活动是您看到的第一个屏幕 当您点击后退按钮时 它会退出应用程序 很好 所以我再次打开应用程序 登录后 我现在处于我的主要活动中 我该如何做到这一点 以便当我现在点击后退按钮时 它会退出应用程序而不是返回到登录活动 当您推送新活动
  • git分支、fork、fetch、merge、rebase和clone之间有什么区别?

    我想了解 Git 中分支 分叉和克隆之间的区别 同样 当我做一个时 这意味着什么git fetch与git pull 另外 什么是rebase与 相比 意味着merge 我怎样才能将个人的承诺压缩在一起 它们如何使用 为什么使用以及它们代表
  • 从另一个对象向 stdClass 对象添加属性

    我希望能够执行以下操作 obj new stdClass obj gt status success obj2 new stdClass obj2 gt message OK 如何扩展 obj 使其包含 obj2 的属性 例如 obj gt
  • 错误:未定义配置属性“mongoURI”

    我尝试启动一个项目 但是当我尝试将 mongo 连接到服务器时 我遇到一个错误 显示连接不起作用 因为它找不到连接字符串所在的文件夹 我的数据库文件 const mongoose require mongoose const config
  • Roslyn 实际上允许您操作 CSharp 项目的 TreatWarningsAsErrors 吗?

    我正在尝试检索设置 TreatWarningsAsErrors 但无法为我加载的解决方案的项目找到它 我想要完成的是从项目文件中获取设置 并将其设置为true 如果还没有的话 接下来 我想让 Roslyn 使用新设置进行编译 这样我就可以检
  • 替换 html 标签中没有的所有引号

    目前我正在用特殊引号替换文本中的所有引号 但是我如何更改我的正则表达式 只替换文本中的引号 而不替换 html 标记中使用的引号 text preg replace w raquo text text preg replace lt w l