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] Quote 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 Quote Link to comment https://forums.phpfreaks.com/topic/11975-php-parser-structure-help/#findComment-45501 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.