Замените iframe src на регулярное выражение

Я пытаюсь изменить атрибут src iframe с http на https. Например, моя строка:

<p>Some random text <iframe src="http://some-random-link.com" width="425" height="350" frameborder="0"></iframe></p>

Что мне нужно, это изменить его на

<p>Some random text <iframe src="https://some-random-link.com" width="425" height="350" frameborder="0" ></iframe></p>

До сих пор я пытался с preg_replace, но без результатов:

$res = preg_replace( '/<iframe\s+.*?\s+src="http(.*?)".*?<\/iframe>/', '<iframe\s+.*?\s+src="https$1".</iframe>', $string);

Спасибо

1

Решение

Попробуйте вместо этого следующий REGEX (DEMO):

/<iframe.*?s*src="http(.*?)".*?<\/iframe>/

Но будьте осторожны, вы НЕ МОЖЕТЕ правильно проанализировать HTML с помощью REGEX. Пожалуйста, используйте вместо этого какой-нибудь XML-парсер.

Кроме того, кажется, вы хотите изменить только http в https, Так что для этого попробуйте следующее:

if(strpos($string, 'https') === false)
{
$string = str_replace("http", "https", $string);
}
1

Другие решения

Вы можете попробовать это регулярное выражение:

/(<iframe.+?src=".*?)(?=:)/

Живая демо Вот

Пример кода в php:

$re = '/(<iframe.+?src=".*?)(?=:)/';
$str = '<p>Some random text <iframe src="http://some-random-link.com" width="425" height="350" frameborder="0"></iframe></p>';
$subst = '\\1s';

$result = preg_replace($re, $subst, $str);

echo $result;
// <p>Some random text <iframe src="https://some-random-link.com" width="425" height="350" frameborder="0"></iframe></p>
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector