PHP正则表达式:替换两个特殊字符之间的子字符串

3

更新问题:

$li_text = $li->plaintext;
echo '<br>'.$li_text;
echo '<br>'.$li_text = preg_replace('/\:(.*?)\>/',':', $li_text);

$li 获取值 "资格:学校和毕业 > BE / B.Tech(工程)" //通过从其他网站使用简单的html DOM解析

我得到的输出是:

Qualification : School & Graduation > BE / B.Tech ( Engineering )
Qualification : School & Graduation > BE / B.Tech ( Engineering ) 

如果我赋值 $li_text = "Qualification : School & Graduation > BE / B.Tech ( Engineering )",那么正则表达式将正常工作。

1
你确定吗?这似乎在regex101上有效 - Jerry
2
我刚刚测试了它们,它们运行良好。你是否将 preg_replace 的返回值重新赋值给 $str?(不得不问一下;有时候问题就在于这些简单的事情) - keithhatfield
@dleiftah 我想那就是正在发生的事情。 - Jerry
2个回答

2
你的代码运行良好。请注意,preg_replace 不会改变主题(即 $str),而是返回一个结果。

preg_replace() 如果 subject 参数为数组,则返回一个数组;否则返回一个字符串。

如果找到匹配项,则将返回新的subject,否则将返回未更改的subject或者如果出现错误,则返回NULL

因此:
preg_replace('/:(.*?)\>/',':', $str);

echo $str;

错误的。但:

$str = preg_replace('/:(.*?)\>/',':', $str);

echo $str;

正在运作


1

Try this one :

preg_replace('/(?<=:)(.*?)>/', '', $str);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接