寻找一个能找到匹配表达式的php解决方案:
文件扩展名数组的示例
$filetypes = array(
jpg,
gif,
png,
js,
tif,
pdf,
doc,
xls,
xlsx,
etc);
Run Code Online (Sandbox Code Playgroud)
以下是我希望根据上述要求更新的工作代码:
现在,这段代码可以工作,只返回包含"http://"的URL,但我也希望包含第二个要求.
$i = 0;
$matches = false;
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value)) {
$i++;
echo "[{$i}] {$value}<br>";
$matches = true;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以in_array()在if语句中进行调用,在此语句中检查pathinfo()扩展是否在$filetypes数组中.
$i = 0;
$matches = false;
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value) && in_array(pathinfo($value, PATHINFO_EXTENSION ), $filetypes)) {
$i++;
echo "[{$i}] {$value}<br>";
$matches = true;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
正如你在评论中所说,一些url包含单引号,你可以使用它来摆脱它们,因为@Ghost在评论中显示了它:
trim($value, "'")
Run Code Online (Sandbox Code Playgroud)
然后在in_array()调用中使用它,如下所示:
in_array(pathinfo(trim($value, "'"), PATHINFO_EXTENSION ), $filetypes)
//^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)