preg匹配字符串中的所有href和src


preg matching all hrefs and srcs in a string

我正在尝试提取字符串中的所有href和src,如下所示:

$content = "
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium
voluptatum deleniti Image: <img src = 'http://example.com/check-3.png' /> Link: <a href ='http://example.com/test.xls'>test.xls</a>";

基本上,我想做的是将example.com更改为一个不同的域名(比如test.com),然后从hrefs和srcs中提取所有文件名。我可以用一个简单的str_replace来替换域名,但现在我一直在尝试提取hrefs和src。

以下是我尝试使用的:

$regex = "/src=['"' ]?([^'"' >]+)['"' ]?[^>]*>.*?href=['"' ]?([^'"' >]+)['"' ]?[^>]*>/i";

如果src(或href)和=(例如)之间没有空格,这似乎有效,但如果有空格(例如),则无效。我试着添加了空格字符,但这没有通过赛前比赛。我不想使用像简单的HTMLdom这样的重库,而且我认为它不会工作,因为它不是一个合适的HTML文档。这是一根从克迪托出来的绳子。

为什么不在空间上添加量词?

$regex = "/src *= *['"' ]?([^'"' >]+)['"' ]?[^>]*>.*?href=['"' ]?([^'"' >]+)['"' ]?[^>]*>/i";
               ^  ^