Написание быстрого плагина для удаления ссылок на Amazon из электронных писем и фидов, чтобы не нарушать условия обслуживания. Разобрался со всем, кроме iframe.
Типичная связанная ссылка iframe выглядит следующим образом
<iframe style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
</iframe>
Это регулярное выражение
/(<iframe )(.*)(amazon.adsystem.com).*/
подбирает все, кроме закрывающего тега iframe Я пробовал варианты
/(<iframe )(.*)(amazon.adsystem.com).*(</iframe>)/
Но не могу заставить его работать. Есть идеи?
Понятно, вот что я имел в виду: 3v4l.org/79CF6. Я думал, что литеральная строка является частью URL-адреса. Тем не менее, буквальная точка должна быть экранирована, и ваша единственная проблема заключается в том, что .
не соответствует новой строке по умолчанию, и как заставить ее работать между строками — очень известная проблема, поэтому закрыть как дубликат.
Теперь я понимаю - новичок в regEx и не знал, что проблема в новой строке. Спасибо
Мы можем захотеть передать здесь символы новой строки с выражением, подобным следующему:
(<iframe)([\s\S]*?)(amazon.adsystem.com)([\s\S]*?)(</iframe>)
$re = '/(<iframe)([\s\S]*?)(amazon.adsystem.com)([\s\S]*?)(</iframe>)/m';
$str = '<iframe style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
</iframe> some other text <iframe style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
</iframe> ';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
array(2) {
[0]=>
array(6) {
[0]=>
string(513) "<iframe style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
</iframe>"
[1]=>
string(7) "<iframe"
[2]=>
string(112) " style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu."
[3]=>
string(19) "amazon-adsystem.com"
[4]=>
string(366) "/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
"
[5]=>
string(9) "</iframe>"
}
[1]=>
array(6) {
[0]=>
string(513) "<iframe style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
</iframe>"
[1]=>
string(7) "<iframe"
[2]=>
string(112) " style = "width:120px;height:240px;" marginwidth = "0" marginheight = "0" scrolling = "no" frameborder = "0" src = "//ws-eu."
[3]=>
string(19) "amazon-adsystem.com"
[4]=>
string(366) "/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ac&ref=qf_sp_asin_til&ad_type=product_link&tracking_id=keepchickens-21&marketplace=amazon®ion=GB&placement=1473689309&asins=1473689309&linkId=2ee7072c3050c40cded9c2ecdb317332&show_border=true&link_opens_in_new_window=true&price_color=333333&title_color=0066c0&bg_color=ffffff">
"
[5]=>
string(9) "</iframe>"
}
Пожалуйста, прекратите повторно открывать очевидные повторяющиеся вопросы. Они не несут никакой дополнительной ценности для сайта. Хотя бы оставляйте комментарии, почему вы считаете тот или иной вопрос не дурачком.
Пожалуйста, также прочитайте в вашей демо-ссылке (и комментарии Виктора под вопросом) о том, почему ваш шаблон не является чем-то, что люди должны копировать и вставлять.
Насколько ваш ~(<iframe )(.*?)(amazon\.adsystem\.com).*?(</iframe>)~ совпадает с ответом, который я принял (<iframe)([\s\S ]*?)(amazon.adsystem.com)([\s\S]*?)(</iframe>) ?