【发布时间】:2011-07-20 20:04:00
【问题描述】:
我正在尝试从某些内容的正文中提取特定的 url 模式,并将其替换为新形成的 url。但是我的正则表达式模式遇到了问题,想看看您是否可以帮助我。
这是我正在测试的代码:
$body = '<p><img src="/file/637/view" height="540" width="640"></p>';
$pattern = '/src="/file/(0-9)+/view"/';
$pattern = '/src="/file/(.)+/view"/';
$pattern = '/"/file/[0-9]+/view"';
$pattern = '/\<img src="(.)+"(.)+"\>/';
preg_match($pattern, $body, $matches);
现在,最后一个模式将抓取整个图像标签,这很好,但我希望它提取所有使用“/file/(some number)/view”模式的图像 url(只是 url)这样我就可以形成新的网址,然后对它们进行字符串替换。当我在 $matches var 上运行 print_r 时,所有其他人都找不到任何东西。
显然,正文字符串代表我正在扫描的内容正文。关于如何使其工作并仅获取图像网址的任何建议?这必须适用于多个图像与许多其他 html (包括锚标记)混合的情况。
【问题讨论】:
-
真正的问题是,你为什么使用正则表达式和 xml 解析?
-
@tandu 上次我检查在一小块内容上运行一点正则表达式比将 html 段解析为一个对象然后对其运行操作更便宜(资源方面)将其从对象转换回 html。因此,除非你有一个令人信服的论据来说明如何更有效地解析 HTML、修改它,然后将其转换回来,否则我想我会坚持使用正则表达式。
标签: php html regex pattern-matching