0

我有以下 ereg_replace 声明:

ereg_replace ( ".*alternative0=\"[^\"]*\"[ ]{0,10}>", "", $v );

因为ereg_replace已弃用,所以我想将其升级到preg_replace并且我还想升级我的代码,因此只会替换第一次出现的代码。

preg_replace ("/.*alternative0=\".*?\".*>/", "", $v,1 );

但它似乎部分起作用。

主要问题是当我">我的怀孕之间有空格时不起作用

这是我要更改的一些示例字符串:

<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>
4

1 回答 1

0

你将有一个更有效的模式:

preg_replace ('/.*alternative0="[^"]++"[^>]*+>/', "", $v, 1);

你不能使用类似.*>的东西:因为点匹配所有字符并且量词 * 是贪婪的,因此.*匹配最终的 > 并且>来自模式的永远不会匹配或在良好的偏移量处不匹配。

于 2013-05-04T21:28:01.000 回答