我在PHP中有这个正则表达式:
$regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
它捕获字符串中的所有图像标记源,但我只想捕获JPG文件。我试图搞砸(。*),但我只是证明我吮吸正则表达式...现在我正在过滤数组,但感觉太像黑客了,我可以直接用它做一场正确的比赛。
答案 0 :(得分:6)
试试这个:
$regex = '/<img ([^>]* )?src=[\"\']([^\"\']*\.jpe?g)[\"\']/Ui';
我还删除了不需要的字符类中的额外|
。
答案 1 :(得分:3)
首先,使用HTML解析器获取所有img
标记。然后,选择那些src
属性的值与正则表达式\.(jpeg|jpg)$
匹配的人。
例如,使用this parser:
$html = file_get_html('http://example.foo.org/bar.html');
foreach ($html->find('img') as $img) {
if (preg_match ("\.(jpeg|jpg)$", $img->src) {
//save $img or $img->src or whatever you need
}
}
编辑:我缩短了正则表达式。您也可以使用\.jpe?g$
。
答案 2 :(得分:0)
只需在关闭引号之前搜索.jpg我相信
$regex = '/<img[^>]*'.'src=[\"|\'](.*\.jpg)[\"|\']/Ui';
答案 3 :(得分:0)
因为您将它用作PHP分隔符,所以必须小心逃避'
。
同时搜索以.jpg
或jpeg
结尾的文件。
$regex = '/<img[^>]*src=["\']([^\'"]*)\.(jpg|jpeg)["\'][^>]*>/Ui';
答案 4 :(得分:0)
尝试:
$regex = '/<img[^>]*'.'src=[\"|\'](.*[.]jpg)[\"|\']/Ui';
答案 5 :(得分:0)
你们都忘记了标签之间可能有空格&lt;和img
所以正确的正则表达式应该从一开始
/<\s*img