2013-11-15 40 views
2

我想用get_the_content()从wordpress文章解析出图片。嵌入在html中的PHP Wordpress Shortcode正则表达式

它返回一堆html和多个收藏夹简码的:

<ul> 
    <li>testing1</li> 
    <li>egfgf</li> 
</li> 
<p>Here!</p> 
[lightbox link="http://www.test.com/photo1.jpg" width="150" align="none" title="photo 1" frame="true" icon="image"] 
[lightbox link="http://www.test.com/photo2.jpg" width="150" align="none" title="photo 2" frame="true" icon="image"] 
[lightbox link="http://www.test.com/photo5.jpg" width="150" align="none" title="photo 5" frame="true" icon="image"] 

在HTML并不总是像上面,并且可以是任何HTML的变体。我的问题是,如何使用正则表达式模式从所有灯箱缩略词中获得链接值?

所需的输出:

Array 
(
[0] => Array 
    (
     [0] => http://www.test.com/photo1.jpg 
     [1] => http://www.test.com/photo2.jpg 
     [2] => http://www.test.com/photo5.jpg 
    ) 
) 

模式我已经尝试使用:

preg_match_all('/(?<![^"])\S+\.[^"]+/', $text, $matches); 
print_r($matches); 

这适用于只是收藏的文字,但是当我加入HTML它不工作。

为什么我的正则表达式在这个网站上工作http://regex101.com/r/eE6fU9但不是在PHP?

回答

1

您可以使用以下

preg_match_all('/\[lightbox[^\]]*link="([^"]*)"[^\]]*\]/i', $text, $matches); 
print_r($matches[1]); 

demo

+0

我有一个很难得到来自阵列的价值。你的正则表达式工作100%。谢谢! – user2997491