我正在尝试从某些内容的主体中提取特定的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 /(某些数字)/视图”模式的图像网址(只是网址)这样我就可以形成新的网址,然后对它们进行字符串替换。当我在$ matches var。
上运行print_r时,所有其他人都找不到任何东西显然,正文字符串代表我正在扫描的内容正文。有关如何使其工作并抓住图像网址的任何建议?这必须适用于多个图像与许多其他html混合的情况,包括锚标记。
答案 0 :(得分:1)
尝试将(.)
替换为(.*?)
或针对您的问题,请尝试按照
$body = '<p><img src="/file/637/view" height="540" width="640"></p>';
$pattern = '/\/file\/([0-9]+)\/view/';
preg_match($pattern, $body, $matches);
答案 1 :(得分:0)
你需要逃避斜线,我认为你有一些未转义的斜线
试试这个:
$body = '<p><img src="/file/637/view" height="540" width="640"></p>';
$pattern = '/<img src="\/file\/([0-9]+)\/view"/'
preg_match($pattern, $body, $matches);
echo ($matches[1]);