lol - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of lol.php

  1. <?php
  2.  
  3. //Объявляем тестовые строки
  4.  
  5. $stringOne   = "http://http.ru/folder/subfolder/../././script.php?var1=val1&var2=val2";
  6. $stringTwo   = "https://http.google.com/folder//././?var1=val1&var2=val2";
  7. $stringThree = "ftp://mail.ru/?hello=world&url=https://http.google.com/folder//././?var1=val1&var2=val2";     
  8. $stringFour  = "mail.ru/?hello=world&url=https://http.google.com/folder//././?var1=val1&var2=val2";
  9. $stringFive  = "index.html?mail=ru";
  10.  
  11. //Объявляем тестовые строки
  12. $stringSix   = "domain2.zone:8080/folder/subfolder/../././../asdss/.././//////../myfolder/script.php?var1=val1&"
  13. ."var2=val2";
  14. $stringSeven = "http://dom.dom.domain2.com:8080/folder/subfolder/./myfolder/script.php?var1=val1&var2=val2?var1=val1&"
  15. ."var2=val2";
  16.  
  17.  
  18. echo "First:";
  19. echo "\n";
  20. my_url_parse($stringOne);
  21. echo "\n";
  22. echo "Second:";
  23. echo "\n";
  24. echo "\n";
  25. my_url_parse($stringTwo);
  26. echo "\n";
  27. echo "Third:";
  28. echo "\n";
  29. echo "\n";
  30. my_url_parse($stringThree);
  31. echo "\n";
  32. echo "Fourht:";
  33. echo "\n";
  34. echo "\n";
  35. my_url_parse($stringFour);
  36. echo "\n";
  37. echo "Fifth:";
  38. echo "\n";
  39. echo "\n";
  40. my_url_parse($stringFive);
  41. echo "\n";
  42. echo "Sixth:";
  43. echo "\n";
  44. echo "\n";
  45. my_url_parse($stringSix);
  46. echo "\n";
  47. echo "Seventh:";
  48. echo "\n";
  49. echo "\n";
  50. my_url_parse($stringSeven);
  51.  
  52.  
  53.  
  54. function my_url_parse(string $__string)
  55. {
  56.     //Объявляем шаблон массива парсинга
  57.     $parseArray = array(
  58.         'protocol'           => '',
  59.         'domain'             => '',
  60.         'zone'               => '',
  61.         '2_level_domain' => '',
  62.     
  63.     //Объявляем шаблон
  64.         'port'               => '8080',
  65.         'raw_folder'     => '',
  66.         'folder'             => '',
  67.         'script_path'    => '',
  68.         'script_name'    => 'index.php',
  69.     
  70.     //Объявляем шаблон
  71.         'is_php'             => true,
  72.         'parameters'     => array(),
  73.         'is_error'           => false
  74. );
  75.  
  76.     $isithaveprotocol = false;
  77.     for ($index = 0; $index < strlen($__string); ++$index)  {
  78.         if ($__string[$index] == ":" && $__string[$index+1] == "/" && $__string[$index+2] == "/" && strpos($__string, "/")>$index){
  79.             isProtocol($__string, $index);
  80.             $isithaveprotocol = true;
  81.             break;
  82.             
  83.         }
  84.     }
  85.     if (!$isithaveprotocol){
  86.         notProtocol($__string);
  87.     }
  88. }
  89.  
  90.  
  91. function isProtocol(string $__string, int $index){
  92.     $parseArray['protocol'] = substr($__string, 0, $index-strlen($__string));
  93.     $__string = substr($__string, $index+3, strlen($__string)-$index-3);
  94.     $array = explode("/", $__string, strlen($__string));
  95.     $domain = $array[0];
  96.     if (strripos($domain, ":", 0) != false){
  97.         $parseArray['port'] = substr($domain, strripos($domain, ":", 0)+1, strripos($domain, ":", 0)+5);
  98.         $domain = substr($domain, 0, strripos($domain, ":", 0));
  99.     }
  100.     else{
  101.         $parseArray['port'] = 80;
  102.     }
  103.     $parseArray['domain'] = $domain;
  104.     $domainarray = explode(".", $domain, strlen($domain));
  105.     $parseArray['zone'] = $domainarray[count($domainarray)-1];
  106.     $parseArray['2_level_domain'] = $domainarray[count($domainarray)-2].'.'.$domainarray[count($domainarray)-1];
  107.     $__string = substr($__string, strpos($__string, "/")+1, strlen($__string)-strpos($domain, "/", 0));
  108.     $parseArray['raw_folder'] = substr($__string, 0, strripos($__string, "/", 0)+1);
  109.     $firstarg = strripos(substr($__string, 0, strripos($__string, "/", 0)), "/", 0);
  110.     if($__string[strripos($__string, "/", 0)-1] == "."){
  111.         $parseArray['folder'] = "false";
  112.     }
  113.     else{
  114.         $parseArray['folder'] = substr($__string, $firstarg+1, strripos($__string, "/", 0)-$firstarg);
  115.     }
  116.     if ($__string[strripos($__string, "/", 0)+1] == "?"){
  117.         $parseArray['script_path'] = substr($__string, $firstarg+1, strripos($__string, "/", 0)-$firstarg)."index.php";
  118.         $parseArray['script_name'] = "index.php";
  119.     }   
  120.     else if(strripos($__string, "/", 0) == false){
  121.         $parseArray['script_path'] = "false";
  122.         $parseArray['script_name'] = "index.php";
  123.     }
  124.     else{
  125.         $parseArray['script_path'] = substr($__string, $firstarg+1, strpos($__string, "?", 0)-$firstarg-1);
  126.         $parseArray['script_name'] = substr($__string, strripos($__string, "/", 0)+1, strpos($__string, "?", 0)-$firstarg-3);
  127.     }
  128.     
  129.     if (strripos($parseArray['script_name'], ".php", 0) != false){
  130.         $parseArray['is_php'] = "true";
  131.     }
  132.     else{
  133.         $parseArray['is_php'] = "false"; 
  134.     }
  135.     $str = $__string;
  136.     for ($index = 0; $index < strlen($str); ++$index)
  137.     {
  138.         if ($str[$index]=="?" || $str[$index]=="&"){
  139.             $delta = strlen($str)-strlen($__string);
  140.             $parameter = substr($__string, $index-$delta+1, strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0)-1);
  141.             $__string = substr($__string, $index-$delta+strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0), strlen($__string) - $index+$delta - strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0)+1);
  142.             if (strpos($__string, "&", 0)==false){
  143.                 $parseArray['parameters'][$parameter] = substr($__string, 1, strlen($__string));
  144.             }
  145.             else{
  146.                 $parseArray['parameters'][$parameter] = substr($__string, 1, strpos($__string, "&", 0)-1);
  147.             }
  148.         }
  149.     }
  150.     
  151.     if (substr_count($array[0], ".",0, strlen($array[0])) > 5){
  152.         $parseArray['is_error'] = "true";
  153.     }
  154.     else{
  155.         $parseArray['is_error'] = "false";
  156.     }
  157.     
  158.     foreach ($parseArray as $key => $value){
  159.         if ($key == "parameters"){
  160.             echo $key;
  161.             echo " => array(";
  162.             echo "\n";
  163.             foreach ($parseArray['parameters'] as $key => $value){
  164.                 echo $key;
  165.                 echo " => ";
  166.                 echo $value;
  167.                 echo "\n";
  168.             }
  169.             echo ")";
  170.             echo "\n";
  171.         }
  172.         else{
  173.             echo $key;
  174.             echo " => ";
  175.             echo $value;
  176.             echo "\n";
  177.         }
  178.     }
  179. }
  180.  
  181. function notProtocol(string $__string){
  182.     $parseArray['protocol'] = "false";
  183.     $parseArray['domain'] = "false";
  184.     $parseArray['port'] = 80;
  185.     $parseArray['2_level_domain'] = "false";
  186.     if (strripos($__string, "/", 0)!=false){
  187.         $parseArray['raw_folder'] = substr($__string, 0, strripos($__string, "/", 0)+1);
  188.     }
  189.     else{
  190.         $parseArray['raw_folder'] = substr($__string, 0, strlen($__string));
  191.     }
  192.     if (substr_count(substr($__string, 0, strpos($__string, "/", 0)), ".",0, strlen(substr($__string, 0, strpos($__string, "/", 0)))) > 5){
  193.         $parseArray['is_error'] = "true";
  194.     }
  195.     else{
  196.         $parseArray['is_error'] = "false";
  197.     }
  198.     $firstarg = strripos(substr($__string, 0, strripos($__string, "/", 0)), "/", 0);
  199.     if($__string[strripos($__string, "/", 0)-1] == "."){
  200.         $parseArray['folder'] = "false";
  201.     }
  202.     else{
  203.         $parseArray['folder'] = substr($__string, $firstarg+1, strripos($__string, "/", 0)-$firstarg);
  204.     }
  205.     if ($__string[strripos($__string, "/", 0)+1] == "?"){
  206.         $parseArray['script_path'] = substr($__string, $firstarg+1, strripos($__string, "/", 0)-$firstarg)."index.php";
  207.         $parseArray['script_name'] = "index.php";
  208.     }
  209.     else if(strripos($__string, "/", 0) == false){
  210.         $parseArray['script_path'] = "false";
  211.         $parseArray['script_name'] = "index.php";
  212.     }
  213.     else{
  214.         $parseArray['script_path'] = substr($__string, $firstarg+1, strpos($__string, "?", 0)-$firstarg-1);
  215.         $parseArray['script_name'] = substr($__string, strripos($__string, "/", 0)+1, strpos($__string, "?", 0)-$firstarg-3);
  216.     }
  217.     if (substr_count(substr($__string, 0, strpos($__string, "/", 0)), ".",0, strlen(substr($__string, 0, strpos($__string, "/", 0)))) > 5){
  218.         $parseArray['is_error'] = "true";
  219.     }
  220.     else{
  221.         $parseArray['is_error'] = "false";
  222.     }
  223.     
  224.     
  225.     $str = $__string;
  226.     for ($index = 0; $index < strlen($str); ++$index)
  227.     {
  228.         if ($str[$index]=="?" || $str[$index]=="&"){
  229.             $delta = strlen($str)-strlen($__string);
  230.             $parameter = substr($__string, $index-$delta+1, strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0)-1);
  231.             $__string = substr($__string, $index-$delta+strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0), strlen($__string) - $index+$delta - strpos(substr($__string, $index-$delta, strlen($__string) - $index+$delta),"=",0)+1);
  232.             if (strpos($__string, "&", 0)==false){
  233.                 $parseArray['parameters'][$parameter] = substr($__string, 1, strlen($__string));
  234.             }
  235.             else{
  236.                 $parseArray['parameters'][$parameter] = substr($__string, 1, strpos($__string, "&", 0)-1);
  237.             }
  238.         }
  239.     }
  240.     
  241.     
  242.     if (strripos($parseArray['script_name'], ".php", 0) != false){
  243.         $parseArray['is_php'] = "true";
  244.     }
  245.     else{
  246.         $parseArray['is_php'] = "false"; 
  247.     }
  248.     
  249.     foreach ($parseArray as $key => $value){
  250.         if ($key == "parameters"){
  251.             echo $key;
  252.             echo " => array(";
  253.             echo "\n";
  254.             foreach ($parseArray['parameters'] as $key => $value){
  255.                 echo $key;
  256.                 echo " => ";
  257.                 echo $value;
  258.                 echo "\n";
  259.             }
  260.             echo ")";
  261.             echo "\n";
  262.             
  263.         }
  264.         else{
  265.             echo $key;
  266.             echo " => ";
  267.             echo $value;
  268.             echo "\n";
  269.         }
  270.     }
  271. }
  272.  
File Description
  • lol
  • PHP Code
  • 13 Oct-2021
  • 9.3 Kb
You can Share it: