Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有转义选项的PHP bbcode解析器_Php_Regex_Parsing_Preg Replace_Bbcode - Fatal编程技术网

带有转义选项的PHP bbcode解析器

带有转义选项的PHP bbcode解析器,php,regex,parsing,preg-replace,bbcode,Php,Regex,Parsing,Preg Replace,Bbcode,我有以下功能: function parse_bbcode($str = ''){ $find = array( "'\[b\](.*?)\[/b\]'is", "'\[i\](.*?)\[/i\]'is", "'\[u\](.*?)\[/u\]'is", "'\[s\](.*?)\[/s\]'is", "'\[img\](.*?)\[/img\]'i", "'\[url\](.*?)\[/

我有以下功能:

function parse_bbcode($str = ''){

    $find = array(
        "'\[b\](.*?)\[/b\]'is",
        "'\[i\](.*?)\[/i\]'is",
        "'\[u\](.*?)\[/u\]'is",
        "'\[s\](.*?)\[/s\]'is",
        "'\[img\](.*?)\[/img\]'i",
        "'\[url\](.*?)\[/url\]'i",
        "'\[url=(.*?)\](.*?)\[/url\]'i",
        "'\[link\](.*?)\[/link\]'i",
        "'\[link=(.*?)\](.*?)\[/link\]'i"
    );

    $replace = array(
        '<strong>\\1</strong>',
        '<em>\\1</em>',
        '<u>\\1</u>',
        '<s>\\1</s>',
        '<img src="\\1" alt="" width="100%" />',
        '<a href="\\1">\\1</a>',
        '<a href="\\1">\\2</a>',
        '<a href="\\1">\\1</a>',
        '<a href="\\1">\\2</a>'
    );

    return preg_replace($find, $replace, $str);

}
函数解析代码($str=''){ $find=数组( “\[b\](.*?\[/b\]”是“, “\[i\](.*?\[/i\]是”, “\[u\](.*?\[/u\]”是“, “\[s\](.*?\[/s\]”是“, “\[img\](.*?\[/img\]'i”, “'\[url\](.*?\[/url\]'i”, “'\[url=(.*?\](.*?\[/url\]'i”, “'\[link\](.*?\[/link\]'i”, “'\[link=(.*?\](.*?\[/link\]]i” ); $replace=数组( “\\1”, '\\1', '\\1', '\\1', '', '', '', '', '' ); 返回preg_replace($find,$replace,$str); } 用于解析BBS代码

如何为BBCODE添加可选性转义

例如:

谢谢你,迈克谢谢你,迈克

谢谢你,迈克谢谢你,迈克

看来是我干的

function parse_bbcode($str = ''){

    $find = array(
        "'([^\\\\])\[b\](.*?)([^\\\\])\[/b\]'is",
        "'\[i\](.*?)\[/i\]'is",
        "'\[u\](.*?)\[/u\]'is",
        "'\[s\](.*?)\[/s\]'is",
        "'\[img\](.*?)\[/img\]'i",
        "'\[url\](.*?)\[/url\]'i",
        "'\[url=(.*?)\](.*?)\[/url\]'i",
        "'\[link\](.*?)\[/link\]'i",
        "'\[link=(.*?)\](.*?)\[/link\]'i",
        "'([^\\\\])\\\\\['i"
    );

    $replace = array(
        '\\1<strong>\\2\\3</strong>',
        '<em>\\1</em>',
        '<u>\\1</u>',
        '<s>\\1</s>',
        '<img src="\\1" alt="" width="100%" />',
        '<a href="\\1">\\1</a>',
        '<a href="\\1">\\2</a>',
        '<a href="\\1">\\1</a>',
        '<a href="\\1">\\2</a>',
        '\\1['
    );

    return preg_replace($find, $replace, $str);

}
函数解析代码($str=''){ $find=数组( “([^\\\]\[b\](.*)([^\\\])\[/b\]'是”, “\[i\](.*?\[/i\]是”, “\[u\](.*?\[/u\]”是“, “\[s\](.*?\[/s\]”是“, “\[img\](.*?\[/img\]'i”, “'\[url\](.*?\[/url\]'i”, “'\[url=(.*?\](.*?\[/url\]'i”, “'\[link\](.*?\[/link\]'i”, “'\[link=(.*?\](.*?\[/link\]'i”, “([^\\\])\\\\\\\\\['i” ); $replace=数组( “\\1\\2\\3”, '\\1', '\\1', '\\1', '', '', '', '', '', '\\1[' ); 返回preg_replace($find,$replace,$str); }
(此示例仅转义[b]标记!)

BBcode来自1998年!请问您为什么要重新发明它?嗨,Lory,您为什么要自己创建一个函数?您是否尝试过packagist的BB代码?我个人安装了一个composer BB codes,它工作得非常完美!请参阅: