【发布时间】:2012-08-30 00:47:16
【问题描述】:
我正在尝试在这样的字符串中提取所有 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 进行域名替换,但现在我被困在尝试提取 href 和 srcs。
这是我尝试使用的:
$regex = "/src=[\"' ]?([^\"' >]+)[\"' ]?[^>]*>.*?href=[\"' ]?([^\"' >]+)[\"' ]?[^>]*>/i";
如果 src (或 href )和 = (例如 )之间没有空格,这似乎可以工作,但如果有空格(例如 ),它就不起作用。我尝试添加空格字符,但预匹配失败。我不想使用像简单的 HTML dom 这样的重型库,此外我认为它不会因为它不是一个合适的 HTML 文档而工作。这是一个来自ckeditor的字符串。
【问题讨论】:
-
“如果每次有人尝试使用正则表达式解析 HTML 时我都有一枚硬币...” - 我建议您使用
DomDocument和XPath- 请参阅 stackoverflow.com/questions/1933631/how-do-i-parse-partial-html。