从URL列表中排除图像URL


exclude image urls from list of URL

我正在收集来自网页的所有url列表。我的问题是,列表中包含的所有图像,我也不想在我的url列表。

这个脚本给了我所有的网页链接。

function getUrl($html)
    {
        $regex = '/'b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|$!:,.;]*[A-Z0-9+&@#'/%=~_|$]/i';
        preg_match_all($regex, $html, $matches);
        $urls = $matches[0];
        return $urls;
    }

下面是从源代码获取图像的正则表达式。

/'bhttps?:'/'/'S+(?:png|jpg)'b/

如何从提取的url列表中排除图像?

$regex = '/(?!.*(?:'.jpe?g|'.gif|'.png)$)'b(https?|ftp|file):'/'/[-A-Z0-9+&@#'/%?=~_|$!:,.;]*[A-Z0-9+&@#'/%=~_|$]/i';
        preg_match_all($regex, $html, $matches);
        $urls = $matches[0];

为什么这个正则表达式仍然不能排除图像?

您可能希望使用向前看来确保您的行以图像的扩展名结束,然后手动从匹配列表中删除该行。例如,要确保一行代码以.png或.jpg结尾,请对其进行匹配:

/'.(?=(png|jpg)$)/

所以for通过你的url列表,克隆他们,如果他们不匹配的正则表达式。

编辑:实际上你甚至不需要向前看,只要试着匹配这个:

'.(png|jpg)$

和丢弃匹配