PHP:除了匹配之外的所有内容

时间:2017-11-09 18:48:29

标签: php regex

我的脚本的以下本机功能确实从我的文章中删除了一些内容,例如bbcodes,html标签和http或https网站,我想修改它以便它除去除“{{ {3}}”。

    function _bbcode_strip($text)
{
    static $patterns = array();

    if ($this->tp_bbcode)
    {
        // use text inside [topicpreview] bbcode as the topic preview
        if (preg_match('#\[(topicpreview[^\[\]]+)\].*\[/\1\]#Usi', $text, $matches))
        {
            $text = $matches[0];
        }
    }

    $text = smiley_text($text, true); // display smileys as text :)
    $text = ($this->tp_line_breaks ? str_replace("\n", '
', $text) : $text); // preserve line breaks

    // Loop through text stripping inner most nested BBCodes until all have been removed
    $regex = '#\[(' . $this->strip_bbcodes . ')[^\[\]]+\]((?:(?!\[\1[^\[\]]+\]).)+)\[\/\1[^\[\]]+\]#Usi';
    while(preg_match($regex, $text))
    {
        $text = preg_replace($regex, '', $text);
    }

    if (empty($patterns))
    {
        $patterns = array(
            '#<!-- [lmw] --><a class="postlink[^>]*>(.*<\/a[^>]*>)?<!-- [lmw] -->#Usi', // Magic URLs
            '#<[^>]*>(.*<[^>]*>)?#Usi', // HTML code
            '#\[/?[^\[\]]+\]#mi', // Strip all bbcode tags
            '#(http|https|ftp|mailto)(:|\&\#58;)\/\/[^\s]+#i', // Strip remaining URLs
            '#"#', // Possible quotes from older board conversions
            '#[\s]+#' // Multiple spaces
        );
    }

    return trim(preg_replace($patterns, ' ', $text));
}

我尝试自己编写脚本的这一部分,这是正则表达式决定剥离的内容:

        '#<!-- [lmw] --><a class="postlink[^>]*>(.*<\/a[^>]*>)?<!-- [lmw] -->#Usi', // Magic URLs
        '#<[^>]*>(.*<[^>]*>)?#Usi', // HTML code
        '#\[/?[^\[\]]+\]#mi', // Strip all bbcode tags
        '#(http|https|ftp|mailto)(:|\&\#58;)\/\/[^\s]+#i', // Strip remaining URLs
        '#"#', // Possible quotes from older board conversions
        '#[\s]+#' // Multiple spaces
但是我没办法做我正在尝试的事情,所以我来到这里寻求帮助。谢谢。

0 个答案:

没有答案