1.txt的内容:
Image" href="images/product_images/original_images/9961_1.jpg" rel="disable-zoom:false; disable-expand: false"><img src="im
不起作用的代码:
<?php
$pattern = '/(images\/product_images\/original_images\/)(.*)(\.jpg)/i';
$result = file_get_contents("1.txt");
preg_match($pattern,$result,$match);
echo "<h3>Preg_match Pattern test:</h3><br><br><pre>";
print_r($match);
echo "</pre>";
?>
我期待这个结果:
Array
(
[0] => images/product_images/original_images/9961_1.jpg
[1] => images/product_images/original_images/
[2] => 9961_1
[3] => .jpg
)
但我喜欢这样:
Array
(
[0] => images/product_images/original_images/9961_1.jpg" rel="disable-zoom:false; disable-expand: false">
[1] => images/product_images/original_images/
[2] => 9961_1.jpg" rel="disable-zoom:false; disable-expand: false">
)
我厌倦了从这个正则表达式的一百万种组合中尝试。我不知道什么是错的。拜托,非常感谢!
答案 0 :(得分:4)
让它不合适:
$pattern = '/(images\/product_images\/original_images\/)(.*?)(\.jpg)/i';
答案 1 :(得分:2)
请记住,正则表达式是贪婪的。第二次捕获(.*)
表示匹配除新行之外的任何字符(除非在mutliline模式下)。所以它可能正在捕捉其余部分。
您可以按照 Wrikken 的建议进行操作。但我喜欢确保我捕捉到我想要的东西。在您的情况下,它看起来像href
属性的值。所以我真的想要至少1个字符,不能是引用,其次是jpg扩展名:
$pattern = '/(images\/product_images\/original_images\/)([^'"]+)(\.jpg)/i';
答案 2 :(得分:0)
这是基本的正则表达式:
href="((.*/)(.*?)(.jpg))"
答案 3 :(得分:-1)
不使用正则表达式解析HTML。
不使用正则表达式解析HTML。
不使用正则表达式解析HTML。