PHP 在单行中获取所有事件
PHP getting all occurrence in single line
这是对任何正则表达式结果的限制吗?
我需要的是在一行中出现所有事件,但 preg_match_all
return 表达式的第一个和最后一个。
有没有其他方法可以让所有的事件都上线?
$re = "/(media|images)(.*)(.jpg|.jpeg|.png)/";
$str = 'images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png';
preg_match_all($re,$str,$matches );
print_r($matches);
这就是我得到的。
Array
(
[0] => Array
(
[0] => images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png
)
[1] => Array
(
[0] => images
)
[2] => Array
(
[0] => /test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3
)
[3] => Array
(
[0] => .png
)
)
您需要通过在量词 (.*)
上添加 ?
来使您的正则表达式非贪婪。
正则表达式应该是这样的:
(media|images)(.*?)(.jpg|.jpeg|.png)
示例代码:
$re = "/(media|images)(.*?)(.jpg|.jpeg|.png)/";
$str = 'images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png';
preg_match_all($re,$str,$matches );
print_r($matches);
这是对任何正则表达式结果的限制吗?
我需要的是在一行中出现所有事件,但 preg_match_all
return 表达式的第一个和最后一个。
有没有其他方法可以让所有的事件都上线?
$re = "/(media|images)(.*)(.jpg|.jpeg|.png)/";
$str = 'images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png';
preg_match_all($re,$str,$matches );
print_r($matches);
这就是我得到的。
Array
(
[0] => Array
(
[0] => images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png
)
[1] => Array
(
[0] => images
)
[2] => Array
(
[0] => /test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3
)
[3] => Array
(
[0] => .png
)
)
您需要通过在量词 (.*)
上添加 ?
来使您的正则表达式非贪婪。
正则表达式应该是这样的:
(media|images)(.*?)(.jpg|.jpeg|.png)
示例代码:
$re = "/(media|images)(.*?)(.jpg|.jpeg|.png)/";
$str = 'images/test/test-1.png" alt="test-1" /></a><a href="/test-2" title="test 2"><img src="/images/test/test2.png" alt="test2" /></a> <a href="/test-3" title="Cruises in Croatia"><img src="/images/EET/test-3.png';
preg_match_all($re,$str,$matches );
print_r($matches);