我正在尝试使用preg_match函数从简单的HTML代码获取所有图像路径,但我没有把它弄好。这是我的代码:
$meta='<img src=\"imgdir/4fd60181316c0cb257628528adb1c342.gif\"><br><img src=\"imgdir/e2326f439cc5f8c201b411bd66eaf9a0.gif\"><br>';
$pattern = "/^imgdir\/[a-zA-Z0-9].*(png|jpg|gif)/i";
preg_match($pattern, $meta, $result);
print_r($result);
请帮助我获取所有图像路径。例如:imgdir/4fd60181316c0cb257628528adb1c342.gif
答案 0 :(得分:3)
正则表达式存在一些问题:
^
)*
量词应放在群组[]
.
应正确转义,以便与文字句点匹配/i
,因此无需同时指定a-z
和A-Z
正确的是:
$meta='<img src=\"imgdir/4fd60181316c0cb257628528adb1c342.gif\"><br><img src=\"imgdir/e2326f439cc5f8c201b411bd66eaf9a0.gif\"><br>';
$pattern = "/imgdir\\/[a-z0-9]*\\.(png|jpg|gif)/i";
preg_match($pattern, $meta, $result);
print_r($result);
<强> See it in action 强>
答案 1 :(得分:1)
^表示字符串的开头,以便不起作用,请尝试:
$pattern = "/imgdir\/[a-zA-Z0-9]*\.(png|jpg|gif)/i";
答案 2 :(得分:0)
$pattern = "/^imgdir\/[a-zA-Z0-9].*(png|jpg|gif)/i";
这只会匹配一个字母数字字符,因为你有。和*转置。尝试交换它们。你可能也不得不逃避这一点,我不确定。