3v4l.org

run code in 300+ PHP versions simultaneously
<?php function friendly_url($url) { // everything to lower and no spaces begin or end $url = strtolower(trim($url)); //replace accent characters, depends your language is needed $url=replace_accents($url); // adding - for spaces and union characters $find = array(' ', '&', '\r\n', '\n', '+',','); $url = str_replace ($find, '-', $url); //delete and replace rest of special chars $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', ''); $url = preg_replace ($find, $repl, $url); //return the friendly url return $url; } function replace_accents($var){ //replace for accents catalan spanish and more $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ','!','(',')'); $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o','-',')'); $var= str_replace($a, $b,$var); return $var; } echo friendly_url("العربية, Ελληνικά, 한국어, فارسی, हिन्दी, עברית, 日本語, Русский, 中文"); echo "<br /> \r\n"; echo friendly_url("&''((§è!!çà)^ù$-µùü()))()()()'--_testblogitems met dfqsfb bla bla jalloäëééé2éé è");
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/IVXnQ
function name:  (null)
number of ops:  10
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   29     0  E >   INIT_FCALL                                               'friendly_url'
          1        SEND_VAL                                                 '%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9%2C+%CE%95%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CE%AC%2C+%ED%95%9C%EA%B5%AD%EC%96%B4%2C+%D9%81%D8%A7%D8%B1%D8%B3%DB%8C%2C+%E0%A4%B9%E0%A4%BF%E0%A4%A8%E0%A5%8D%E0%A4%A6%E0%A5%80%2C+%D7%A2%D7%91%D7%A8%D7%99%D7%AA%2C+%E6%97%A5%E6%9C%AC%E8%AA%9E%2C+%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%2C+%E4%B8%AD%E6%96%87'
          2        DO_FCALL                                      0  $0      
          3        ECHO                                                     $0
   30     4        ECHO                                                     '%3Cbr+%2F%3E+%0D%0A'
   31     5        INIT_FCALL                                               'friendly_url'
          6        SEND_VAL                                                 '%26%27%27%28%28%C2%A7%C3%A8%21%21%C3%A7%C3%A0%29%5E%C3%B9%24-%C2%B5%C3%B9%C3%BC%28%29%29%29%28%29%28%29%28%29%27--_testblogitems+met+dfqsfb+bla+bla+jallo%C3%A4%C3%AB%C3%A9%C3%A9%C3%A92%C3%A9%C3%A9+%C3%A8'
          7        DO_FCALL                                      0  $1      
          8        ECHO                                                     $1
          9      > RETURN                                                   1

Function friendly_url:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/IVXnQ
function name:  friendly_url
number of ops:  29
compiled vars:  !0 = $url, !1 = $find, !2 = $repl
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    4     1        INIT_FCALL                                               'strtolower'
          2        INIT_FCALL                                               'trim'
          3        SEND_VAR                                                 !0
          4        DO_ICALL                                         $3      
          5        SEND_VAR                                                 $3
          6        DO_ICALL                                         $4      
          7        ASSIGN                                                   !0, $4
    7     8        INIT_FCALL_BY_NAME                                       'replace_accents'
          9        SEND_VAR_EX                                              !0
         10        DO_FCALL                                      0  $6      
         11        ASSIGN                                                   !0, $6
   10    12        ASSIGN                                                   !1, <array>
   11    13        INIT_FCALL                                               'str_replace'
         14        SEND_VAR                                                 !1
         15        SEND_VAL                                                 '-'
         16        SEND_VAR                                                 !0
         17        DO_ICALL                                         $9      
         18        ASSIGN                                                   !0, $9
   14    19        ASSIGN                                                   !1, <array>
   15    20        ASSIGN                                                   !2, <array>
   16    21        INIT_FCALL                                               'preg_replace'
         22        SEND_VAR                                                 !1
         23        SEND_VAR                                                 !2
         24        SEND_VAR                                                 !0
         25        DO_ICALL                                         $13     
         26        ASSIGN                                                   !0, $13
   19    27      > RETURN                                                   !0
   20    28*     > RETURN                                                   null

End of function friendly_url

Function replace_accents:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/IVXnQ
function name:  replace_accents
number of ops:  11
compiled vars:  !0 = $var, !1 = $a, !2 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   22     0  E >   RECV                                             !0      
   23     1        ASSIGN                                                   !1, <array>
   24     2        ASSIGN                                                   !2, <array>
   25     3        INIT_FCALL                                               'str_replace'
          4        SEND_VAR                                                 !1
          5        SEND_VAR                                                 !2
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $5      
          8        ASSIGN                                                   !0, $5
   26     9      > RETURN                                                   !0
   27    10*     > RETURN                                                   null

End of function replace_accents

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
150.37 ms | 1394 KiB | 23 Q