<?php
$bbcode = <<<BBCODE
Want a list?
[ul][li]Here is a video: https://www.youtube.com/watch?v=mUxt--mMjwA[/li]
[li]This is a [b]tagged[/b] video: [url]https://www.youtube.com/watch?v=u6MyOXk98DI[/url][/li]
[li]This is a [b]tagged & attributed[/b] video: [url=https://www.youtube.com/watch?v=8G2WzH4AKpE]Pearl Jam - Present Tense[/url][/li]
[li]Look at this:https://www.example.com/example?ohyeah=sure#okay this is a raw link[/li]
[li][i]No attibute[/i] bbcode url: [url]http://example.com/x1[/url][/li]
[li]A url with link and link text: [url=http://example.com/x2]x2[/url][/li]
[li]Image with \"ignorable" text: [IMG=https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Portrait_of_Julie_Bishop.jpg/220px-Portrait_of_Julie_Bishop.jpg]Julie Bishop[/IMG][/li]
[li]Image: [img=https://docs.joomla.org/images/3/37/Joomla-3D-Vertical-logo-light-background-en.png][/img][/li]
[li][quote]"I could either watch it happen or be a part of it."[/quote]
- Elon Musk[/li]
[li][user=2943403]mickmackusa[/user][/li]
[li]Code:
[code]while (\$noSuccess) {
tryAgain();
if (\$dead) break;
}[/code][/li]
[/ul]
BBCODE;
$search = array (
'~\[b](.*?)\[/b]~is',
'~\[i](.*?)\[/i]~is',
'~\[u](.*?)\[/u]~is',
'~\[ul](.*?)\[/ul]~is',
'~\[li](.*?)\[/li]~is',
'~\[user=(.*?)](.*?)\[/user]~i',
'~\[url=https?.*?(?:[/?&](?:e|vi?|ci)(?:[/=]|%3D)|youtu\.be/|embed/|/user/[^/]+#p/(?:[^/]+/)+)([\w-]{10,12})].*?\[/url]~i',
'~\[url]https?.*?(?:[/?&](?:e|vi?|ci)(?:[/=]|%3D)|youtu\.be/|embed/|/user/[^/]+#p/(?:[^/]+/)+)([\w-]{10,12}).*?\[/url]~i',
'~\[url=((?:ht|f)tps?://[a-z\d.-]+\.[a-z]{2,3}/\S*?)](.*?)\[/url]~i',
'~\[url]((?:ht|f)tps?://[a-z\d.-]+\.[a-z]{2,3}/\S*?)\[/url]~i',
'~\[img=(.*?)].*?\[/img]~i',
'~\[quote](.*?)\[/quote]~is',
'~\[code](.*?)\[/code]~is',
'~(?:<a.*?</a>|<img.*?</img>|<iframe.*?</iframe>)(*SKIP)(*FAIL)|(?:\bhttps?.*?(?:[/?&](?:e|vi?|ci)(?:[/=]|%3D)|youtu\.be/|embed/|/user/[^/]+#p/(?:[^/]+/)+)([\w-]{10,12}))\S*~i',
'~(?:<a.*?</a>|<img.*?</img>|<iframe.*?</iframe>)(*SKIP)(*FAIL)|\bhttps?://.+?(?=\s|$)~im'
);
$replace = array (
'<strong>$1</strong>',
'<em>$1</em>',
'<u>$1</u>',
'<ul>$1</ul>',
'<li>$1</li>',
'<a href="../login/profile?u=$1" target="_blank">$2</a>',
'<iframe width="640" height="360" src="https://www.youtube.com/embed/$1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
'<iframe width="640" height="360" src="https://www.youtube.com/embed/$1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
'<a href="$1" target="_blank">$2</a>',
'<a href="$1" target="_blank">$1</a>',
'<img src="$1"></img>',
'<quote>$1</quote>',
'<code>$1</code>',
'<iframe width="640" height="360" src="https://www.youtube.com/embed/$1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
'<a href="$0" target="_blank">$0</a>'
);
echo preg_replace($search, $replace, $bbcode);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/tIVlj
function name: (null)
number of ops: 10
compiled vars: !0 = $bbcode, !1 = $search, !2 = $replace
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
2 0 E > ASSIGN !0, 'Want+a+list%3F%0A%5Bul%5D%5Bli%5DHere+is+a+video%3A+https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DmUxt--mMjwA%5B%2Fli%5D%0A%5Bli%5DThis+is+a+%5Bb%5Dtagged%5B%2Fb%5D+video%3A+%5Burl%5Dhttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Du6MyOXk98DI%5B%2Furl%5D%5B%2Fli%5D%0A%5Bli%5DThis+is+a+%5Bb%5Dtagged+%26+attributed%5B%2Fb%5D+video%3A+%5Burl%3Dhttps%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D8G2WzH4AKpE%5DPearl+Jam+-+Present+Tense%5B%2Furl%5D%5B%2Fli%5D%0A%5Bli%5DLook+at+this%3Ahttps%3A%2F%2Fwww.example.com%2Fexample%3Fohyeah%3Dsure%23okay+this+is+a+raw+link%5B%2Fli%5D%0A%5Bli%5D%5Bi%5DNo+attibute%5B%2Fi%5D+bbcode+url%3A+%5Burl%5Dhttp%3A%2F%2Fexample.com%2Fx1%5B%2Furl%5D%5B%2Fli%5D%0A%5Bli%5DA+url+with+link+and+link+text%3A+%5Burl%3Dhttp%3A%2F%2Fexample.com%2Fx2%5Dx2%5B%2Furl%5D%5B%2Fli%5D%0A%5Bli%5DImage+with+%5C%22ignorable%22+text%3A+%5BIMG%3Dhttps%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Fb%2Fbe%2FPortrait_of_Julie_Bishop.jpg%2F220px-Portrait_of_Julie_Bishop.jpg%5DJulie+Bishop%5B%2FIMG%5D%5B%2Fli%5D%0A%5Bli%5DImage%3A+%5Bimg%3Dhttps%3A%2F%2Fdocs.joomla.org%2Fimages%2F3%2F37%2FJoomla-3D-Vertical-logo-light-background-en.png%5D%5B%2Fimg%5D%5B%2Fli%5D%0A%5Bli%5D%5Bquote%5D%22I+could+either+watch+it+happen+or+be+a+part+of+it.%22%5B%2Fquote%5D%0A++++-+Elon+Musk%5B%2Fli%5D%0A%5Bli%5D%5Buser%3D2943403%5Dmickmackusa%5B%2Fuser%5D%5B%2Fli%5D%0A%5Bli%5DCode%3A+%0A%5Bcode%5Dwhile+%28%24noSuccess%29+%7B%0A%09tryAgain%28%29%3B%0A%09if+%28%24dead%29+break%3B%0A%7D%5B%2Fcode%5D%5B%2Fli%5D%0A%5B%2Ful%5D'
23 1 ASSIGN !1, <array>
41 2 ASSIGN !2, <array>
59 3 INIT_FCALL 'preg_replace'
4 SEND_VAR !1
5 SEND_VAR !2
6 SEND_VAR !0
7 DO_ICALL $6
8 ECHO $6
9 > RETURN 1
Generated using Vulcan Logic Dumper, using php 8.0.0
preferences:
136.54 ms | 998 KiB | 14 Q