PHP регулярное выражение не работает в php [preg_replace}

0

Я пытаюсь удалить следующий html, но мое регулярное выражение не работает

<div class="vmargin"><div><iframe src="/test.php?u=N0Bhlant98C6MRj0D44HwJMuf5TdA%2F24oG9hQ2qqX6IR2IruUxVrrhLR4EpHQDvGtuHH4%2BLgJMBG6L5%2BTs6t6FfgCbo%3D&amp;b=5&amp;f=frame" style="width:718px;height:438px;border:0;margin:0;padding:0;" __idm_frm__="100"></iframe></div><div><a href="" class="report_video" data-video-id="732253" title="Report Video">Video Broken?</a></div></div>

Я попробовал следующее регулярное выражение

preg_replace("@<div class=\"vmargin\".*?<\\/div>.*?<\\/div><\\/div>@s",'', $input); 

Что с ним не так

Теги:
preg-replace

2 ответа

1
Лучший ответ

Не используйте \\ потому что в ваших закрывающих divs нет символа \. Попробуй это:

<div class=\"vmargin\".*?<\/div>.*?<\/div><\/div>

Так:

$string = '<div class="vmargin"><div><iframe src="/test.php?u=N0Bhlant98C6MRj0D44HwJMuf5TdA%2F24oG9hQ2qqX6IR2IruUxVrrhLR4EpHQDvGtuHH4%2BLgJMBG6L5%2BTs6t6FfgCbo%3D&amp;b=5&amp;f=frame" style="width:718px;height:438px;border:0;margin:0;padding:0;" __idm_frm__="100"></iframe></div><div><a href="" class="report_video" data-video-id="732253" title="Report Video">Video Broken?</a></div></div>';
$input = preg_replace("@<div class=\"vmargin\".*?<\/div>.*?<\/div><\/div>@s", '', $string);
var_dump($input);

Выход: string '' (length=0)

  • 0
    Это была не проблема. Это работает и с вашим решением, после того, как я проверил, и работайте с этим также: @<div class=\"vmargin\".*?</div>.*?</div></div>@s без выхода. (на divs).
  • 0
    мой regex не работал, но ваш работал
1

Я знаю, что это не технически ответ, но чтобы сделать результат читаемым (требуется форматирование кода)

Работает на меня:

<?php

$input = '<div class="vmargin"><div><iframe src="/test.php?u=N0Bhlant98C6MRj0D44HwJMuf5TdA%2F24oG9hQ2qqX6IR2IruUxVrrhLR4EpHQDvGtuHH4%2BLgJMBG6L5%2BTs6t6FfgCbo%3D&amp;b=5&amp;f=frame" style="width:718px;height:438px;border:0;margin:0;padding:0;" __idm_frm__="100"></iframe></div><div><a href="" class="report_video" data-video-id="732253" title="Report Video">Video Broken?</a></div></div>';

echo( "!".preg_replace("@<div class=\"vmargin\".*?<\\/div>.*?<\\/div><\\/div>@s",'', $input) .'!' );

Вывод:

C:\test>php test.php
!!

Переход к ' цитируемым строкам" и удаление экранирования облегчает чтение

$input = '<div class="vmargin"><div><iframe src="/test.php?u=N0Bhlant98C6MRj0D44HwJMuf5TdA%2F24oG9hQ2qqX6IR2IruUxVrrhLR4EpHQDvGtuHH4%2BLgJMBG6L5%2BTs6t6FfgCbo%3D&amp;b=5&amp;f=frame" style="width:718px;height:438px;border:0;margin:0;padding:0;" __idm_frm__="100"></iframe></div><div><a href="" class="report_video" data-video-id="732253" title="Report Video">Video Broken?</a></div></div>';

echo( '!'.preg_replace('@<div class="vmargin".*?</div>.*?</div></div>@s','', $input) .'!' );

Тот же вывод

Ещё вопросы

Сообщество Overcoder
Наверх
Меню