赢得';在php eregi_replace的alt文本中找不到模式
我想知道eregi_替换需要什么正则表达式来捕获alt属性中不包含的字符串 e、 g.应在以下方面找到并取代John Doe: “约翰·多伊出生于……” 但当John Doe在任何标签中时,不查找/替换,例如:赢得';在php eregi_replace的alt文本中找不到模式,php,regex,Php,Regex,我想知道eregi_替换需要什么正则表达式来捕获alt属性中不包含的字符串 e、 g.应在以下方面找到并取代John Doe: “约翰·多伊出生于……” 但当John Doe在任何标签中时,不查找/替换,例如: <img src="/jd.jpg" alt="John Doe at the beach" /> 您已经达到了正则表达式的限制。为此,您需要一个自定义解析器。 标记可以嵌套,并且正则表达式不能匹配这样的模式 <b> <<b>> <
<img src="/jd.jpg" alt="John Doe at the beach" />
您已经达到了正则表达式的限制。为此,您需要一个自定义解析器。 标记可以嵌套,并且正则表达式不能匹配这样的模式
<b>
<<b>>
<<<b>>>
<b>>
<<b>
<<b>>>
而不是像这样匹配模式
<b>
<<b>>
<<<b>>>
<b>>
<<b>
<<b>>>
>
etc如果我想替换不在标签内的“John Doe”,我会这样做:
$str = preg_replace('/John Doe(?![^<>]*+>)/i', $new_name, $str);
$str=preg_replace('/John Doe(?![^]*+>)/i',$new_name,$str);
(?![^]*+>)
是一种消极的前瞻;它说“如果在这一点之前有任何尖括号,那么第一个不是结束括号。”这不是万无一失的,因为属性值可以包含尖括号,但根据我的经验,它们很少包含尖括号
正则表达式基本上与HTML不兼容;即使有了
preg\uu
套件提供的高级功能,如和,您也常常不得不依赖于简化假设,如属性值中没有尖括号。我甚至不会尝试使用更有限的ereg\u
功能来完成这项工作。它必须是eregi\u replace
?ereg[i].
函数被弃用,取而代之的是功能更强大的preg.
函数。使用preg\u replace
可能是可行的。当然……我会使用任何可以完成工作的工具。:-)但如果我们在元素中搜索文本,就不会有嵌套。元素处于零宽度前瞻的整洁使用范围内。