我有以下ereg_replace声明:
ereg_replace ( ".*alternative0=\"[^\"]*\"[ ]{0,10}>", "", $v );
由于ereg_replace
已被弃用,我想将其升级为preg_replace
,我还想升级我的代码,以便只替换第一次出现的代码。
preg_replace ("/.*alternative0=\".*?\".*>/", "", $v,1 );
但似乎部分工作。
主要问题是当我在"
和>
之间有空格时,我的preg无法正常工作
以下是我想要更改的一些示例字符串:
<tag type="head" alternative0="not head">{!head!}</tag>
<tag type="tail" alternative0="tail>{!not tail!}</tag>
但它也可能是:
<tag type="head" alternative0="not head">{!
xxxx !}</tag>
甚至:
<tag type="header" alternative0="not head " > {! blah bla !}</tag>
答案 0 :(得分:0)
您将拥有更高效的模式:
preg_replace ('/.*alternative0="[^"]++"[^>]*+>/', "", $v, 1);
你不能使用.*>
之类的东西,因为点匹配所有字符而量词*是贪婪的,因此.*
匹配最终的&gt;同样,模式中的>
永远不会匹配或在良好的偏移处不匹配。