2010-10-18 43 views
0

我试图从perl模式中使用prag_match从图像标记中提取src值。我不知道我在哪里做错了,但我也收到了不想要的部分。这里是我的格局看怎么样 -preg_match_all表达式

preg_match_all('#src="http.+"#',$imagetag,$temp); 

$imagetag = "<img src="http://....." alt="build4.jpg" title="build4.jpg" width="320" height="240" />" 

而不是返回SRC = “...” 的一部分,我得到了全属性 - SRC = “...” ALT = “..” 称号=”。 。“width =”..“height =”..“;我的patten出错了。如果有人能指出这个错误,我将非常感激。

+0

呃,我不认为这是Perl的...这看起来更像是PHP。与Perl兼容的正则表达式。 – BoltClock 2010-10-18 16:31:16

+0

请考虑使用适当的DOM解析器,而不是基于正则表达式的刮板解析HTML。 – 2010-10-18 16:32:49

+0

@Bolt:抱歉,我的坏话。这是php与perl兼容的正则表达式。 @Noufal:它是否会让我的脚本变慢,因为我需要创建对象并传递标签?因为我最多只需要处理4个标签。 – Andrew 2010-10-18 17:19:21

回答

4

你需要让你的模式是非贪婪的代替.+为使用.+?

preg_match_all('#src="http.+?"#',$imagetag,$temp); 
+0

非常感谢,它的工作原理。如果你不介意我问,怎么加?改变整个结果?我的意思是,我想附上。引号内的+将返回结果限制为带有src =“字母数字/符号”的返回结果;在我看来,它认为最后一个属性的引号与我的模式中的引号相匹配,并考虑所有其余的属性作为模式匹配。+。 – Andrew 2010-10-18 17:29:09

相关问题