假设我们有一个字符串:<img src="/a.jpg">
- 如何提取/a.jpg
?
那个肯定是错误的:#<img src="(.*)[^"]">#
答案 0 :(得分:1)
这应该有效
/<img\s+src="(.*?)"/
答案 1 :(得分:0)
这有效(尝试在这里测试http://www.spaweditor.com/scripts/regex/index.php)
/ “* [^”] /
答案 2 :(得分:0)
/<img src="([^"]*)">/
有效。
答案 3 :(得分:0)
你可以用 ^“:
来思考正确的方向<img +src="([^"]+)">
答案 4 :(得分:0)
#<img src="(.*)[^"]"># // original
这几乎是在正确的轨道上。然而,它结合了两种不同的方法。
(.*)
太贪心了。您需要添加?
才能提前停止。 (.*?)
否则它会提醒报价。
然后[^"]
是多余的。但是,您可以将其用作非特定.*
的替代方法。只需将其嵌入支架中即可。它的优点是永远不会意外地匹配封闭的引号。您可以使用相同的空格来使整个正则表达式更具弹性,并省略结束>
,以便在存在额外属性时也可以使用:
#<img[^>]+src="([^"]*)"#
这是少数可以使用正则表达式的情况之一。如果你想匹配更复杂的HTML,那么更喜欢proper parser(phpQuery或QueryPath极大地简化了它。)
答案 5 :(得分:0)
其他答案只有在src是img标签所具有的唯一属性且始终是第一个时才有效。
if (preg_match('/<img\s+(?:\w+="[^"]+"\s*)*?src="([^"]+)/', $input, $matches))
$src = $matches[1];