3v4l.org

run code in 300+ PHP versions simultaneously
<?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