【发布时间】:2012-11-04 03:36:15
【问题描述】:
我试图理解 php 中的 preg_match_all。 我和一个朋友和几个朋友一起开了一个小网站,主要是为了练习编码,不久前我们添加了一个部分,其中包含删除任何图像来源的代码:
$html = file_get_contents('http://www.anyrandomwebsite.com');
preg_match_all('/<img[^>]+>/i',$html, $result);
我们几乎只是在网上找到的,无法理解它,但我知道它会在页面上找到任何图像标签实例并将它们放入数组中。
现在,我正在尝试创建一个代码来搜索页面上任何链接的源代码(因此任何以“http”开头的链接),最好只搜索以特定扩展名结尾的链接(即 .net 或 .zip )
但是,我不知道如何编写模式。我试过学习正则表达式,但根据我朋友的说法,用于查找图像标签的代码不符合正常规则,他们也没有完全理解。
基本上,我在找人写一个 preg_match_all 可以在页面上找到链接,然后请向我解释它为什么起作用,并解释上面的代码是如何工作的(最好是逐个字符地在图案部分)
非常感谢任何对此作出回应的人!
【问题讨论】:
-
您是否尝试阅读水力压裂法MANUAL,因为它可能比大多数人能够更好地解释它?
-
我从手册开始,是的。它变得不那么有意义了。 (特别是因为它的定义并不具体,例如,它没有提到 $pattern 是正则表达式,我以前从未使用过,所以需要更多的研究才能弄清楚。然后我花了一段时间学习正则表达式,我发现的大多数指南似乎都跳过了步骤,而且我永远无法理解解释此代码的程度。
-
例如,在这段代码中:'/]+>/i' 我知道它是从搜索以']',因为我看不到搜索除'>'之外的任何字符会完成什么。我也看不出它是如何找到标签的结尾的。
-
match the character <img literally,然后是match any character that is not ">",然后是between one and unlimited times, giving back as possible,然后是match the ">" character literally。它变得复杂,因为您认为它很复杂。只需通过规则,它是不言自明的。
标签: php html regex preg-match