我正在使用PHP,并希望制作一些自动化功能,这些功能将取代像
这样的破坏的HTML属性title="TV 40" is better"
与
title="TV 40" is better"
所以,我的问题是: 我如何正则表达式找到第二个双引号?
答案 0 :(得分:1)
您可以使用此代替Regex
$value = "HTML CODE";
html_entities($value, ENT_QUOTES, 'UTF-8');
我希望这可以帮助你,如果我错了就纠正我。
答案 1 :(得分:-1)
我对你想要完成的事情感到有些困惑。也许一个更大的例子会有所帮助。
有关您问题背景的一些额外信息可能会有所帮助。
可能会询问许多个案,但在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是个坏主意。