正则表达式模式匹配所有图像与替换持有自我PHP功能

时间:2011-01-26 10:23:05

标签: php regex preg-replace

我有一个preg_replace函数来查找所有图像并将它们包含在<figure>标记内,并使用不同的类,这取决于图像源:

$pattern = '"/<img[^>]*src="([^"]+)"[^>]*alt="([^"]+)"[^>]*>\i"e';
$replacement = '"<figure class=\"" . check($1) . "\"><img src=\"$1\" alt=\"$2\" /></figure>"';
preg_replace($pattern, $replacement, $content);

因此,要设置正确的类,我希望使用图像源参数调用函数check($source)。通过这种方式,功能将返回必要的类。 正如您在上面的代码中看到的,我正在尝试使用e修饰符,但它似乎不起作用。

  1. 我是否需要修改模式和替换?
  2. 我是否应该使用preg_replace_all查找所有图片,如果这些图片在$content变量中很多?

2 个答案:

答案 0 :(得分:1)

您可以使用preg_replace_callback()来实现此目的。它允许您定义和使用功能进行替换。该函数应该期望一个匹配数组,它应该返回替换值。

带有e修饰符的

preg_replace()也可以解决问题。

答案 1 :(得分:0)

检查正则表达式库,已经有一些HTML image patterns