任何正则表达式替换这样的破坏的HTML属性?

时间:2010-12-08 13:09:07

标签: html

我正在使用PHP,并希望制作一些自动化功能,这些功能将取代像

这样的破坏的HTML属性
title="TV 40" is better"

title="TV 40" is better"

所以,我的问题是: 我如何正则表达式找到第二个双引号?

2 个答案:

答案 0 :(得分:1)

您可以使用此代替Regex

$value = "HTML CODE";
html_entities($value, ENT_QUOTES, 'UTF-8');

我希望这可以帮助你,如果我错了就纠正我。

答案 1 :(得分:-1)

我对你想要完成的事情感到有些困惑。也许一个更大的例子会有所帮助。

  • 您是否有一个您编写的html文档,其中包含您要修复的错误?
  • 您是否正在尝试编写一个可修复任何损坏的HTML的程序?

有关您问题背景的一些额外信息可能会有所帮助。


可能会询问许多个案,但在vim中这对我有用(对于您提供的示例):

:%s/"\(.*\)"\(.*\)"/"\1\"\2"/g

它会改变这个:

title="TV 40" is better" title="TV 40" is better"

title="TV of 40 inch, spelled also as, 40" is better"

title="TV 40 is better"

对此:

title="TV 40" is better" title="TV 40" is better

title="TV of 40 inch, spelled also as, 40" is better

title="TV 40 is better"

然而,它会破坏这样的东西(已经有效):

title="TV 40 is better" title="TV 40 is better"

我认为正如我之前提到的那样,给我们一些关于你要解决的问题的更多背景会有所帮助。


更一般地说,尝试用正则表达式解析html通常是一个坏主意。有太多东西可以变得怪异。除非你知道html将采用某种格式,否则我不会这样做。 HTML不是regular language,因此无法使用正则表达式进行解析。你能解决这个问题的唯一方法就是你知道关于html的一些特别之处。或者你只想在一个以预定方式格式化的html页面中找到非常具体的东西。

根据Jeff Attwod的说法,如果你试图用正则表达式解析html “你是在屈服于暗神Cthulhu的诅咒......呃......代码”See this page

This answer还提供了一些很好的例子,说明为什么用正则表达式解析html是个坏主意。