我有一个文本文本区域,可能包含标签。我需要在src属性(“/ storyimages /”)中使用特定的文本字符串标识这些标记并删除它们。例如,如果我有文本
<br><img src="/storyimages/myimage.jpg" align="right" WIDTH="105" HEIGHT="131"><b>(CNS) </b>Lorem ipsum dolor...
我只是想摆脱整个标签并用''替换它。我试图使用的正则表达式是
/<img src=.*\/storyimages\/.*>/
但它不起作用。会发生什么是它确定字符串ok的开头,但它没有识别结束&gt;如果我使用preg_match(),则匹配以。
开头我知道你不应该在HTML上使用正则表达式,但这不是嵌入式标签;它只是一堆文本中的一个标签,所以我应该没问题。从我所看到的,&gt;不是一个特殊的角色,但即使我逃脱它,我仍然得到相同的结果。
有什么简单的我想念会让这个有用吗?或者我是否需要编写某种函数,逐个字符地循环遍历字符串以查找打开和关闭括号的位置然后替换它们?
有趣的是,当我使用regex tester进行尝试时,它运行正常,但是当我实际运行代码时,我遇到了上述问题。
感谢。
答案 0 :(得分:2)
使用<img src=.*?\/storyimages\/.*?>
正则表达式。
重点是使用*?
量化器来匹配非贪婪(即尽可能匹配最不匹配的字符)。
以下是PHP代码示例:
$re = "/<img src=.*?\\/storyimages\\/.*?>/";
$str = "<br><img src=\"/storyimages/myimage.jpg\" align=\"right\" WIDTH=\"105\" HEIGHT=\"131\"><b>(CNS) </b>Lorem ipsum dolor...";
preg_match($re, $str, $matches);
匹配将显示为<img src="/storyimages/myimage.jpg" align="right" WIDTH="105" HEIGHT="131">
。