3v4l.org

run code in 500+ PHP versions simultaneously
<?php $html = <<<EOD <p>С этой формы приходят заявки <a href="https://site.com/lack_tech.php">https://site.com/lack_tech.php</a></p> <p>Или что ты имеешь ввиду?</p> <div class="attachment_files_message"> <p>Прикреплённые файлы:</p> <a href="http://site.com/public/uploads/kylticket/2670/Screenshot_1.png" target="_blank">Screenshot_1.png</a> </div> EOD; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($dom); foreach ($xpath->query('//a[@target="_blank"]') as $OurNode) { if (preg_match('~\.(?:jpe?g|png)$~i', $OurNode->getAttribute('href'))) { $fragment = $dom->createDocumentFragment(); $aNode = $dom->createElement('a'); $aNode->setAttribute('data-fancybox', 'gallery'); // + data-fancybox $aNode->nodeValue = ''; $aNode->setAttribute('href', $OurNode->getAttribute('href')); $img = $dom->createElement('img'); $img->setAttribute("src", $OurNode->getAttribute('href')); $img->setAttribute("alt", ""); $img->setAttribute("class", "tmp_class"); $aNode->appendChild($img); $fragment->appendChild($aNode); $OurNode->parentNode->replaceChild($fragment, $OurNode); } } echo mb_convert_encoding($dom->saveHTML(), 'UTF-8', 'HTML-ENTITIES');
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 21, Position 2 = 78
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 78
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 77
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 77
Branch analysis from position: 78
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 78
filename:       /in/lEBZO
function name:  (null)
number of ops:  88
compiled vars:  !0 = $html, !1 = $dom, !2 = $xpath, !3 = $OurNode, !4 = $fragment, !5 = $aNode, !6 = $img
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, '%3Cp%3E%D0%A1+%D1%8D%D1%82%D0%BE%D0%B9+%D1%84%D0%BE%D1%80%D0%BC%D1%8B+%D0%BF%D1%80%D0%B8%D1%85%D0%BE%D0%B4%D1%8F%D1%82+%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8+%3Ca+href%3D%22https%3A%2F%2Fsite.com%2Flack_tech.php%22%3Ehttps%3A%2F%2Fsite.com%2Flack_tech.php%3C%2Fa%3E%3C%2Fp%3E%0A%3Cp%3E%D0%98%D0%BB%D0%B8+%D1%87%D1%82%D0%BE+%D1%82%D1%8B+%D0%B8%D0%BC%D0%B5%D0%B5%D1%88%D1%8C+%D0%B2%D0%B2%D0%B8%D0%B4%D1%83%3F%3C%2Fp%3E%0A%3Cdiv+class%3D%22attachment_files_message%22%3E+%0A+++%3Cp%3E%D0%9F%D1%80%D0%B8%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5+%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%3A%3C%2Fp%3E%0A+++%3Ca+href%3D%22http%3A%2F%2Fsite.com%2Fpublic%2Fuploads%2Fkylticket%2F2670%2FScreenshot_1.png%22+target%3D%22_blank%22%3EScreenshot_1.png%3C%2Fa%3E%0A%3C%2Fdiv%3E'
   12     1        NEW                                                  $8      'DOMDocument'
          2        DO_FCALL                                          0          
          3        ASSIGN                                                       !1, $8
   13     4        INIT_METHOD_CALL                                             !1, 'loadHTML'
          5        INIT_FCALL                                                   'mb_convert_encoding'
          6        SEND_VAR                                                     !0
          7        SEND_VAL                                                     'HTML-ENTITIES'
          8        SEND_VAL                                                     'UTF-8'
          9        DO_ICALL                                             $11     
         10        SEND_VAR_NO_REF_EX                                           $11
         11        SEND_VAL_EX                                                  8196
         12        DO_FCALL                                          0          
   14    13        NEW                                                  $13     'DOMXPath'
         14        SEND_VAR_EX                                                  !1
         15        DO_FCALL                                          0          
         16        ASSIGN                                                       !2, $13
   16    17        INIT_METHOD_CALL                                             !2, 'query'
         18        SEND_VAL_EX                                                  '%2F%2Fa%5B%40target%3D%22_blank%22%5D'
         19        DO_FCALL                                          0  $16     
         20      > FE_RESET_R                                           $17     $16, ->78
         21    > > FE_FETCH_R                                                   $17, !3, ->78
   17    22    >   INIT_METHOD_CALL                                             !3, 'getAttribute'
         23        SEND_VAL_EX                                                  'href'
         24        DO_FCALL                                          0  $18     
         25        FRAMELESS_ICALL_2                preg_match          ~19     '%7E%5C.%28%3F%3Ajpe%3Fg%7Cpng%29%24%7Ei', $18
         26      > JMPZ                                                         ~19, ->77
   18    27    >   INIT_METHOD_CALL                                             !1, 'createDocumentFragment'
         28        DO_FCALL                                          0  $20     
         29        ASSIGN                                                       !4, $20
   19    30        INIT_METHOD_CALL                                             !1, 'createElement'
         31        SEND_VAL_EX                                                  'a'
         32        DO_FCALL                                          0  $22     
         33        ASSIGN                                                       !5, $22
   20    34        INIT_METHOD_CALL                                             !5, 'setAttribute'
         35        SEND_VAL_EX                                                  'data-fancybox'
         36        SEND_VAL_EX                                                  'gallery'
         37        DO_FCALL                                          0          
   21    38        ASSIGN_OBJ                                                   !5, 'nodeValue'
         39        OP_DATA                                                      ''
   22    40        INIT_METHOD_CALL                                             !5, 'setAttribute'
         41        SEND_VAL_EX                                                  'href'
         42        INIT_METHOD_CALL                                             !3, 'getAttribute'
         43        SEND_VAL_EX                                                  'href'
         44        DO_FCALL                                          0  $26     
         45        SEND_VAR_NO_REF_EX                                           $26
         46        DO_FCALL                                          0          
   24    47        INIT_METHOD_CALL                                             !1, 'createElement'
         48        SEND_VAL_EX                                                  'img'
         49        DO_FCALL                                          0  $28     
         50        ASSIGN                                                       !6, $28
   25    51        INIT_METHOD_CALL                                             !6, 'setAttribute'
         52        SEND_VAL_EX                                                  'src'
         53        INIT_METHOD_CALL                                             !3, 'getAttribute'
         54        SEND_VAL_EX                                                  'href'
         55        DO_FCALL                                          0  $30     
         56        SEND_VAR_NO_REF_EX                                           $30
         57        DO_FCALL                                          0          
   26    58        INIT_METHOD_CALL                                             !6, 'setAttribute'
         59        SEND_VAL_EX                                                  'alt'
         60        SEND_VAL_EX                                                  ''
         61        DO_FCALL                                          0          
   27    62        INIT_METHOD_CALL                                             !6, 'setAttribute'
         63        SEND_VAL_EX                                                  'class'
         64        SEND_VAL_EX                                                  'tmp_class'
         65        DO_FCALL                                          0          
   28    66        INIT_METHOD_CALL                                             !5, 'appendChild'
         67        SEND_VAR_EX                                                  !6
         68        DO_FCALL                                          0          
   29    69        INIT_METHOD_CALL                                             !4, 'appendChild'
         70        SEND_VAR_EX                                                  !5
         71        DO_FCALL                                          0          
   30    72        FETCH_OBJ_R                                          ~36     !3, 'parentNode'
         73        INIT_METHOD_CALL                                             ~36, 'replaceChild'
         74        SEND_VAR_EX                                                  !4
         75        SEND_VAR_EX                                                  !3
         76        DO_FCALL                                          0          
   16    77    > > JMP                                                          ->21
         78    >   FE_FREE                                                      $17
   33    79        INIT_FCALL                                                   'mb_convert_encoding'
         80        INIT_METHOD_CALL                                             !1, 'saveHTML'
         81        DO_FCALL                                          0  $38     
         82        SEND_VAR                                                     $38
         83        SEND_VAL                                                     'UTF-8'
         84        SEND_VAL                                                     'HTML-ENTITIES'
         85        DO_ICALL                                             $39     
         86        ECHO                                                         $39
         87      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
165.26 ms | 2283 KiB | 14 Q