php正则表达式帮助

时间:2011-02-14 17:00:51

标签: php regex wordpress lightbox

我使用插件在图像上添加阴影,并在同一网站上使用灯箱。这是我在wordpress插件编辑中的功能:

function filter($content) {
return preg_replace_callback('#<img.+?src\s*=\s*["|\'](.+?)["|\'].+?>#isu', array($this, 'filter_callback'), $content);
}

它的作用是为所有图像添加一个滤镜,滤镜会添加阴影。但我不希望它将过滤器添加到所有图像。因为当它发生时,它会以某种方式搞砸灯箱。所以我想编辑上面的这一行,以确保只有在特定的div或页面中使用过滤器。或者另一种方式可能是在特定div或页面中不进行过滤。

我很乐意获得一些关于如何编辑这些正则表达式的教程。

3 个答案:

答案 0 :(得分:6)

我知道它无处不在,但你为什么不使用CSS3 box-shadow

答案 1 :(得分:5)

如果您使用的是灯箱,则表示您依赖于您网站上的Javascript。

为什么不让(非常有用)跳转到jQuery并使用jQuery(非常有用)选择器来执行此操作。不要为某些奇怪的位置进行正则表达式,而是执行类似

的操作

$('.lightbox-photo').addClass('filter')

我知道这不是你问题的答案,但我认为这是一个更通用的解决方案。

答案 2 :(得分:1)

除非你改变回调函数,否则不可能按照你用正则表达式描述的那样做,因为:

  1. PHP中不允许灵活长度的lookbehinds
  2. 按照您的描述进行操作,同时避免灵活长度的后视将改变发送给回调函数的值