将引号替换为alt属性的双引号

时间:2017-10-30 08:07:30

标签: php regex

什么reg表达式可以用单引号替换这个错误的单词alt ='某些' s'用这个alt ="有些东西" s" 请帮忙

PS我有很多页面都有html内容,图像中有这样的错误 所以我需要更换所有的。一些alts引用了它(alt ='某些' s')一些alts没有(alt ='某些面孔'),但所有alts都有视图alt =& #39;什么'我需要将它们转换为alt ="一些文字"

2 个答案:

答案 0 :(得分:3)

这里的问题是,除了分隔符引用之外,我们如何告诉'中使用的something's face引用。

我建议:

alt='(.*?)'\s+

请参阅demo

在这里,我以懒惰的方式匹配属性的内容,直到下一个'后跟至少一个空格。这假设文本中的'引号将始终直接跟随非空格字符。问题是,这将失败,'s占有复数名词。例如:

alt='I was at my parents' house'

但在这种情况下,我不知道我们应该如何区分引号。

答案 1 :(得分:1)

对于通用模式(不只是alt属性值),您可以使用:

Pattern & Replacement Demo Link

测试字符串:

<img src='/foto/content/00/01/19/42/prezentatsiya-womens-health.pg'width=300 height=300 alt='На презентации Women's hеаlth' title='Women's hеаlth' data-info='These are the parents' concerns'/>

模式:~[^=]\K'(?!/>| ?[\w-]+=)~

替换:\\'

说明:

为了记录,我的模式证明与alt='I was at my parents' house'相比是成功的。

定位不在=之前的单引号,并且后面没有/>或其他属性声明。我已经使属性之间没有间距,因为在您的示例中,输入width=300被粉碎到src值的后面。

\K只是意味着&#34;在这里开始全字符串匹配&#34;。此技术用于避免使用捕获组,这可以提高模式性能。

或者如果你想以相反的方式工作,你可以将外部单引号转换为双引号 - 但是你可能需要搜索任何预先存在的双引号。

~[\w-]+=\K'|'(?=/>| ?[\w-]+=)~ Demo Link