3v4l.org

run code in 300+ 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 = 81
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 81
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 80
Branch analysis from position: 30
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 80
Branch analysis from position: 81
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 81
filename:       /in/lEBZO
function name:  (null)
number of ops:  91
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, ->81
         21    > > FE_FETCH_R                                               $17, !3, ->81
   17    22    >   INIT_FCALL                                               'preg_match'
         23        SEND_VAL                                                 '%7E%5C.%28%3F%3Ajpe%3Fg%7Cpng%29%24%7Ei'
         24        INIT_METHOD_CALL                                         !3, 'getAttribute'
         25        SEND_VAL_EX                                              'href'
         26        DO_FCALL                                      0  $18     
         27        SEND_VAR                                                 $18
         28        DO_ICALL                                         $19     
         29      > JMPZ                                                     $19, ->80
   18    30    >   INIT_METHOD_CALL                                         !1, 'createDocumentFragment'
         31        DO_FCALL                                      0  $20     
         32        ASSIGN                                                   !4, $20
   19    33        INIT_METHOD_CALL                                         !1, 'createElement'
         34        SEND_VAL_EX                                              'a'
         35        DO_FCALL                                      0  $22     
         36        ASSIGN                                                   !5, $22
   20    37        INIT_METHOD_CALL                                         !5, 'setAttribute'
         38        SEND_VAL_EX                                              'data-fancybox'
         39        SEND_VAL_EX                                              'gallery'
         40        DO_FCALL                                      0          
   21    41        ASSIGN_OBJ                                               !5, 'nodeValue'
         42        OP_DATA                                                  ''
   22    43        INIT_METHOD_CALL                                         !5, 'setAttribute'
         44        SEND_VAL_EX                                              'href'
         45        INIT_METHOD_CALL                                         !3, 'getAttribute'
         46        SEND_VAL_EX                                              'href'
         47        DO_FCALL                                      0  $26     
         48        SEND_VAR_NO_REF_EX                                       $26
         49        DO_FCALL                                      0          
   24    50        INIT_METHOD_CALL                                         !1, 'createElement'
         51        SEND_VAL_EX                                              'img'
         52        DO_FCALL                                      0  $28     
         53        ASSIGN                                                   !6, $28
   25    54        INIT_METHOD_CALL                                         !6, 'setAttribute'
         55        SEND_VAL_EX                                              'src'
         56        INIT_METHOD_CALL                                         !3, 'getAttribute'
         57        SEND_VAL_EX                                              'href'
         58        DO_FCALL                                      0  $30     
         59        SEND_VAR_NO_REF_EX                                       $30
         60        DO_FCALL                                      0          
   26    61        INIT_METHOD_CALL                                         !6, 'setAttribute'
         62        SEND_VAL_EX                                              'alt'
         63        SEND_VAL_EX                                              ''
         64        DO_FCALL                                      0          
   27    65        INIT_METHOD_CALL                                         !6, 'setAttribute'
         66        SEND_VAL_EX                                              'class'
         67        SEND_VAL_EX                                              'tmp_class'
         68        DO_FCALL                                      0          
   28    69        INIT_METHOD_CALL                                         !5, 'appendChild'
         70        SEND_VAR_EX                                              !6
         71        DO_FCALL                                      0          
   29    72        INIT_METHOD_CALL                                         !4, 'appendChild'
         73        SEND_VAR_EX                                              !5
         74        DO_FCALL                                      0          
   30    75        FETCH_OBJ_R                                      ~36     !3, 'parentNode'
         76        INIT_METHOD_CALL                                         ~36, 'replaceChild'
         77        SEND_VAR_EX                                              !4
         78        SEND_VAR_EX                                              !3
         79        DO_FCALL                                      0          
   16    80    > > JMP                                                      ->21
         81    >   FE_FREE                                                  $17
   33    82        INIT_FCALL                                               'mb_convert_encoding'
         83        INIT_METHOD_CALL                                         !1, 'saveHTML'
         84        DO_FCALL                                      0  $38     
         85        SEND_VAR                                                 $38
         86        SEND_VAL                                                 'UTF-8'
         87        SEND_VAL                                                 'HTML-ENTITIES'
         88        DO_ICALL                                         $39     
         89        ECHO                                                     $39
         90      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
140.96 ms | 1077 KiB | 15 Q