Закрыть в noindex некоторые картинки

quick

Постоялец
Регистрация
24 Май 2008
Сообщения
55
Реакции
24
Доброго дня,
помогите, пожалуйста, правильно написать preg_replace, чтобы все тэги img, кроме тех, у которых src=example.com, обрамлялись ноиндексом. Атрибут src не обязательно идет сразу после img. Так же могут быть использованы как двойные, так и одинарные кавычки, или вообще без кавычек.
Пример исходного кода:
Код:
<p>text<img class="left" src='http://bal-bla.com' />text</p>
<p>text<img class='right' src="http://example.com" />text</p>
Результат должен быть:
Код:
<p>text<noindex><img class="left" src='http://bal-bla.com' /></noindex>text</p>
<p>text<img class='right' src="http://example.com" />text</p>
 
Доброго дня,
помогите, пожалуйста, правильно написать preg_replace, чтобы все тэги img, кроме тех, у которых src=example.com, обрамлялись ноиндексом. Атрибут src не обязательно идет сразу после img. Так же могут быть использованы как двойные, так и одинарные кавычки, или вообще без кавычек.
Пример исходного кода:
Код:
<p>text<img class="left" src='http://bal-bla.com' />text</p>
<p>text<img class='right' src="http://example.com" />text</p>
Результат должен быть:
Код:
<p>text<noindex><img class="left" src='http://bal-bla.com' /></noindex>text</p>
<p>text<img class='right' src="http://example.com" />text</p>

PHP:
$data = '<p>text1<img class="left" src=\'http://bal-bla.com\' />text</p>
<p>text2<img class=\'right\' src="http://example.com" />text</p>';
$data = preg_replace('/<img[^>]*?src=[\'"]?http:\/\/example\.com[\'"]?[^>]*?>/is', '<noindex>$0</noindex>', $data);
echo $data;
 
Мне больше интересно зачем закрывать картинки в noindex? На сколько мне известно этот тег нужен для закрытия текста от индексации.
 
Мне больше интересно зачем закрывать картинки в noindex? На сколько мне известно этот тег нужен для закрытия текста от индексации.
html-код это и есть текст.
noindex — имя не входящего в официальную спецификацию тега языка гипертекстовой разметки веб-страниц HTML, предназначенного для включения в него частей веб-страниц, не предлагаемых к индексации поисковыми системами.
Учи матчасть ;)
 
Доброго дня,
помогите, пожалуйста, правильно написать preg_replace, чтобы все тэги img, кроме тех, у которых src=example.com, обрамлялись ноиндексом. Атрибут src не обязательно идет сразу после img. Так же могут быть использованы как двойные, так и одинарные кавычки, или вообще без кавычек.
Первое, что пришло в голову:
PHP:
$text = '<p>text<img class="left" src=\'http://bal-bla.com\' />text</p>
<p>text<img class=\'right\' src="http://example.com" />text</p>';

echo preg_replace_callback("|<img .*?/>|", asd, $text);

function asd($t) {
    if (strpos($t[0], 'http://example.com')) {
       return $t[0];
    } else {
       return '<noindex>'.$t[0].'</noindex>';
    }
}
 
Первое, что пришло в голову:
PHP:
$text = '<p>text<img class="left" src=\'http://bal-bla.com\' />text</p>
<p>text<img class=\'right\' src="http://example.com" />text</p>';

echo preg_replace_callback("|<img .*?/>|", asd, $text);

function asd($t) {
    if (strpos($t[0], 'http://example.com')) {
       return $t[0];
    } else {
       return '<noindex>'.$t[0].'</noindex>';
    }
}
1) регулярка регистрозависимая и тег <IMG /> уже не съест.
2) /> - слэша в коде может и не быть(он требуется в xhtml strict).
3) example.com может находиться и не в href, в этом случае произойдет ошибочная замена.
 
спасибо за столь быстрый ответ!
saen,
ваш вариант почему-то не работает. можете сами убедиться на
Belial,
использовал ваш вариант, вроде всё ок, спасибо!
b7186,
у меня на сайте много внешних картинок, есть мнение, что ТИЦ "утекает" таким образом, хочу проверить.
 
спасибо за столь быстрый ответ!
saen,
ваш вариант почему-то не работает. можете сами убедиться на *** скрытое содержание ***
Belial,
использовал ваш вариант, вроде всё ок, спасибо!
b7186,
у меня на сайте много внешних картинок, есть мнение, что ТИЦ "утекает" таким образом, хочу проверить.
нуб) проверь в любом другом конструкторе, а еще лучше запусти скрипт и сам убедись :D
 
на сайте в первую очередь проверил, он работает с точностью до наоборот, т.е. example.com экранирует, а все остальные оставляет как есть.
 
на сайте в первую очередь проверил, он работает с точностью до наоборот, т.е. example.com экранирует, а все остальные оставляет как есть.
Пожалста
PHP:
$data = '<p>text1<img class="left" src=\'http://bal-bla.com\' />text</p>
<p>text2<img class=\'right\' src="http://example.com" />text</p>';
$data = preg_replace('/<img[^>]*?src=[\'"]?http:\/\/(?!example\.com)[\'"]?[^>]*?>/is', '<noindex>$0</noindex>', $data);
echo $data;
 
Назад
Сверху