我正在尝试从以下内容中提取src属性:[attname src =“http://example.org”] somecontent [attname src =“http://www.example.com”]
我现在拥有什么:
preg_match_all('#attname src=".*[^"]#', $buffer, $bufferarr);
然而它不起作用 - 在第二个"
之后没有停止,结果如下:attname src="http://example.org"] somecontent [attname src="http://www.example.com
答案 0 :(得分:2)
默认情况下,+
和*
是“贪婪的” - 他们会尽可能多地吞噬字符。这就是为什么你得到的比你想要的多。如果您向他们添加?
(+?
和*?
),他们将不会贪婪,并会尽快停止。
你的regexp看起来也错了。它应该是#attname src="[^"]*?"#
。
答案 1 :(得分:1)
preg_match_all('#attname src="([^"]*)"#', $buffer, $bufferarr);
答案 2 :(得分:0)
不是最好的解决方案,但无论如何它完成了工作:
$str = '[attname src="http://example.org"] somecontent [attname src="http://www.example.com"]';
preg_match_all('/attname src=\"(.*?)\"/', $str, $match);
var_dump($match);