Как я могу получить все iframes без comments_embed в src для использования в preg_replace через regex
Текущий HTML
<iframe src="https://www.youtube.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FMumsVillage%2Fvideos%2F881603451988373%2F&show_text=0&width=560" frameborder="0" allowfullscreen="" width="560" height="315" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>
<iframe src="https://www.facebook.com/plugins/comment_embed.php?href=https%3A%2F%2Fwww.facebook.com%2FMumsVillage%2Fvideos%2F881603451988373%2F%3Fcomment_id%3D881663971982321&include_parent=false" frameborder="0" allowfullscreen="" width="560" height="161" frameborder="0" scrolling="no"></iframe>
<iframe src="https://www.facebook.com/plugins/comment_embed.php?href=https%3A%2F%2Fwww.facebook.com%2FMumsVillage%2Fvideos%2F881603451988373%2F%3Fcomment_id%3D881633751985343&include_parent=false" frameborder="0" allowfullscreen="" width="560" height="141" frameborder="0" scrolling="no"></iframe>
<iframe src="https://www.youtube.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FMumsVillage%2Fvideos%2F881603451988373%2F&show_text=0&width=560" frameborder="0" allowfullscreen="" width="560" height="315" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>
Текущее регулярное выражение
<iframe[^>]+src="(?!(?:.+ )?comment_embed(?: .+)?")([^"]+)"/isg
Попробуйте это регулярное выражение:
<iframe ((?!comment_embed).)*?<\/iframe>
Я думаю, что отрицательный взгляд, который вы хотите использовать, просто ?!comment_embed
, Мы можем использовать этот взгляд, чтобы умерить точку, как в ((?!comment_embed).)*
, Таким образом, шаблон просто говорит, чтобы соответствовать любому персонажу, но на каждом этапе пути смотрите вперед и убедитесь, что мы не видим comment_embed
в любом месте. Следовательно, этот подход должен быть устойчивым к comment_embed
появляется в любом месте src
URL.
В качестве отказа от ответственности, как правило, вы не должны использовать обычное регулярное выражение для анализа содержимого HTML. Возможно, если вы просто хотите извлечь эти изолированные теги верхнего уровня, это работает, но парсер будет лучше.
Других решений пока нет …