如何组合我的两个正则表达式并将结果保存为变量?

时间:2011-03-31 23:53:06

标签: php regex

我用这个

获得所有图像
preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui' , $content , $matches);

这就是我阻止所有图像的方法,如果它有一个“坏词”

'/(list|of|bad|words)/i'

如何组合它们并将结果保存在变量而不是print_r中? 我的目的是从内容中删除所有这些图像并生成“干净”的内容。

谢谢!

2 个答案:

答案 0 :(得分:2)

可能最快的方法是运行第一个正则表达式,然后过滤掉坏的正则表达式。你很可能很容易通过回调来做到这一点。我不会尝试将正则表达式结合起来。

答案 1 :(得分:0)

可能需要进行一些调整,具体取决于$content的格式:

<?php
    $content = 'http://www.example.com/images/image001.jpg 
                http://www.example.com/images/image002.jpeg 
                http://www.example.com/images/list001.jpg 
                http://www.example.com/images/image003.png 
                http://www.example.com/images/bad002.png 
                http://www.example.com/images/image004.gif 
                http://www.example.com/images/words003.jpg';

    preg_match_all('!http://.+\.(?:jpe?g|png|gif)!Ui', $content, $matches);

    preg_match_all('/\S+(list|of|bad|words)\S+/i', $content, $bads);

    $filtered = array_values(array_diff($matches[0], $bads[0]));

    print_r($filtered);
?>

<强>输出:

Array
(
    [0] => http://www.example.com/images/image001.jpg
    [1] => http://www.example.com/images/image002.jpeg
    [2] => http://www.example.com/images/image003.png
    [3] => http://www.example.com/images/image004.gif
)