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

时间:2012-08-29 16:42:35

标签: php regex

我正在尝试提取字符串中的所有href和srcs:

$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和srcs。

以下是我尝试使用的内容:

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

如果src(或href)和=(例如)之间没有空格,但是如果有空格(例如)它不起作用,这似乎有效。我已经尝试添加空格字符,但这不符合preg匹配。我不想使用像简单的HTML dom这样繁重的库,除此之外我认为它不会起到适当的HTML文档的作用。这是一个来自ckeditor的字符串。

1 个答案:

答案 0 :(得分:1)

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

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