Удалить строку при помощи регулярных выражений
$string = '<?php $a=chr(104).chr(101).chr(97).chr(100).chr(101).chr(114);$b= .chr(105).chr(112).chr(116).chr(62);}?><?php echo("dfdsf"); ?>';
$pattern = '/\<\?php %[a-zA-Z0-9_-]%\}\?\>/';
echo preg_replace($pattern, "", $string);
пытаюсь вырезать <?php $a=chr(104).chr(101).chr(97).chr(100).chr(101).chr(114);$b= .chr(105).chr(112).chr(116).chr(62);}?> из строки $string. Но не получается составить регулярное выражение.
предполагаю, что начало строки всегда <?php $a= а конец ;}?> . Между ними могут быть абсолютно любые символы.
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Конкретно для данного случая, регулярное выражение и код будут такими:
$string = '<?php $a=chr(104).chr(101).chr(97).chr(100).chr(101).chr(114);$b= .chr(105).chr(112).chr(116).chr(62);}?><?php echo("dfdsf"); ?>';
$pattern = '/\<\?php[\s\S]+?\?\>/';
echo preg_replace($pattern, '', $string, 1);
Рабочий пример на JS:
const string = `<?php \$a=chr(104).chr(101).chr(97).chr(100).chr(101).chr(114);\$b= .chr(105).chr(112).chr(116).chr(62);}?><?php echo("dfdsf"); ?>`;
const pattern = /\<\?php[\s\S]+?\?\>/;
console.log(string.replace(pattern, ''));