ifreborn Posted June 14, 2006 Share Posted June 14, 2006 need a little help understanding the structure of this parser and parsers in general.I know how the function works and the array what i dont get is what:[i][b](.+?)[/b] [/i][i][b]([0-9]{6})\](.+?)\ [/b][/i][code]<?phpfunction bbcode($string){$string = nl2br(htmlspecialchars($string));$patterns = array( '`\[b\](.+?)\[/b\]`is', '`\[i\](.+?)\[/i\]`is', '`\[u\](.+?)\[/u\]`is', '`\[strike\](.+?)\[/strike\]`is', '`\[color=#([0-9]{6})\](.+?)\[/color\]`is', '`\[email\](.+?)\[/email\]`is', '`\[img\](.+?)\[/img\]`is', '`\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]`si', '`\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]`si', '`\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]`si', '`\[flash=([0-9]+),([0-9]+)\](.+?)\[/flash\]`is', '`\[quote\](.+?)\[/quote\]`is', '`\[indent](.+?)\[/indent\]`is', '`\[size=([1-6]+)\](.+?)\[/size\]`is' );$replaces = array( '<strong>\\1</strong>', '<em>\\1</em>', '<span style="border-bottom: 1px dotted">\\1</span>', '<strike>\\1</strike>', '<span style="color:#\1;">\2</span>', '<a href="mailto:\1">\1</a>', '<img src="\1" alt="" style="border:0px;" />', '<a href="\1\2">\6</a>', '<a href="\1\2">\1\2</a>', '<a href="http://\1">\1</a>', '<object width="\1" height="\2"><param name="movie" value="\3" /><embed src="\3" width="\1" height="\2"></embed></object>', '<strong>Quote:</strong><div style="margin:0px 10px;padding:5px;background-color:#F7F7F7;border:1px dotted #CCCCCC;width:80%;"><em>\1</em></div>', '<pre>\\1</pre>', '<h\1>\2</h\1>' );$string = preg_replace($patterns, $replaces , $string);return $string;}?>[/code] Link to comment https://forums.phpfreaks.com/topic/11975-php-parser-structure-help/ Share on other sites More sharing options...
joquius Posted June 14, 2006 Share Posted June 14, 2006 that's regular expressions.In this case:(.+?) means "match more than one char" (between the previous and following matches([0-9]{6})\](.+?) means match 6 instances of numbers 0-9, one ] char and then the previous .+?for this stuff you should look at the regular expressions tutorial Link to comment https://forums.phpfreaks.com/topic/11975-php-parser-structure-help/#findComment-45501 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.