Поиск и замена текста

Статус
В этой теме нельзя размещать новые ответы.

Smile

Старатель
Регистрация
12 Ноя 2006
Сообщения
157
Реакции
11
Нужна помощь, есть следующий текс к примеру:

<p>Австралийская рок-группа AC/DC удостоена титула лучшего коллектива 2010 года на церемонии вручения наград Roll Of Honour Awards музыкального журнала Classic Rock. Мероприятие состоялось вечером 10 ноября в Лондоне.Альбомом года была признана дебютная сольная пластинка экс-гитариста Guns N'Roses Слэша, озаглавленная просто "Slash". Лучшей новой группой стала The Union.В номинации "Классический альбом" первенствовал "Live at Budokan" Cheap Trick, а в категории "Лучшее переиздание" -...</p><img src='http://site.ru/public/upload/news_images/584/584860.jpg' alt="" width="100" border="0">
как из этой строки передать в перемену УРЛ картинки потом удалить из строки

<img src='http://site.ru/public/upload/news_images/584/584860.jpg' alt="" width="100" border="0">


кто знает? помогите?
 
Если предположить, что в переменной $html лежит текст из твоего примера, то после выполнения этого кода
Код:
$pattern = '/\<img src=\'(.*?)\' alt="" width="100" border="0"\>/';

function fetchLink($matches) {
   global $link;
   $link = $matches[1];
}

$html = preg_replace_callback($pattern, 'fetchLink', $html);

в $html останется текст без картинки, а в $link будет ссылка. Код накидал по-быстрому, чтобы было понятен способ.
 
Если предположить, что в переменной $html лежит текст из твоего примера, то после выполнения этого кода
Код:
$pattern = '/\<img src=\'(.*?)\' alt="" width="100" border="0"\>/';

function fetchLink($matches) {
   global $link;
   $link = $matches[1];
}

$html = preg_replace_callback($pattern, 'fetchLink', $html);
в $html останется текст без картинки, а в $link будет ссылка. Код накидал по-быстрому, чтобы было понятен способ.


попробовал, часика 2 ковырялся с этим кодом так ничего и не получилось , ссылку не передает, картинку не удаляет... :(
 
Специально проверил. Залил текст на сайт. Запустил скрипт.
PHP:
<?php
$html = file_get_contents('http://test4smile.narod.ru/news.txt');
$pattern = '/\<img src=\'(.*?)\' alt="" width="100" border="0"\>/';
function fetchLink($matches) {
   global $link;
   $link = $matches[1];
}
$html = preg_replace_callback($pattern, 'fetchLink', $html);
echo "$link\n$html";
Вот результат
zzzzz.jpg


Что не работает-то? Сам код лишь показывает реализацию требуемой вещи, но если структура текста у вас другая, либо оформление картинки иное, понятное дело, нужно адаптировать регексп.
 
хммм, я этот код пытался прикрутить к маленькому парсеру, но чтото не получается... вроде все правельно написано но работать не хочет

PHP:
<?php

header("Content-Type: text/html; charset=utf-8");

$url = 'http://www.newsland.ru/rss/getnews/ord/1/cat/0';
$rss = simplexml_load_file ($url);

foreach ( $rss->channel->item as $item ) 
{
    $desc = $item->description;
}

$html = $desc;
$pattern = '/\<img border="0" src=\'(.*?)\' width="100" alt=""\>/';
function fetchLink($matches) {
   global $link;
   $link = $matches[1];
}
$html = preg_replace_callback($pattern, 'fetchLink', $html);
echo "$link\n$html"; 

?>
насчет структуры я понел, но в моем коде даже если структура правильная все равно не работает... может я чтото пропустил ?
 
Это все потому, что в первом примере url изображения в одиночных кавычках, а на newsland.ru — в двойных.
Если заменить регексп на
PHP:
$pattern = '/\<img border="0" src="(.*?)" width="100" alt=""\>/';
то все заработает :)
 
Это все потому, что в первом примере url изображения в одиночных кавычках, а на newsland.ru — в двойных.
Если заменить регексп на
PHP:
$pattern = '/\<img border="0" src="(.*?)" width="100" alt=""\>/';
то все заработает :)

спасибо, работает...

а можно как то сделать чтоб $pattern подстраивался сам под картинку и брал урл ? ведь на разных сайтах картинки в description могут выводится по разному...
 
ещё универсальные варианты для тега img
PHP:
$test = <<<TEST
test
<img src='http://example.com/public/upload/news_images/1.jpg' alt="" width="100" border="0">
test2
<img src="http://example.com/public/upload/news_images/2.jpg">
test3
<img src="http://example.com/public/upload/news_images/3.jpg" />
<img src='http://example.com/public/upload/news_images/4.jpg' />
<img src=http://example.com/public/upload/news_images/5.jpg />
<img
src=http://example.com/public/upload/news_images/6.jpg 
/>
<img width="100" src=http://example.com/public/upload/news_images/7.jpg />
<img width="100" src=http://example.com/public/upload/news_images/8.jpg width="100" border=0 />
TEST;

header('Content-Type: text/plain; charset=utf-8');
//все картинки и ссылки на них
preg_match_all('#(<img\s*(.*)\s*src=[\'|"]*([^\s\'"]+)[^>]*>)#i', $test, $img);
print_r($img);
//удаляем картинки
$text = preg_replace('#(<img\s*(.*)\s*src=[\'|"]*([^\s\'"]+)[^>]*>)#i', '', $test);
echo $text;
//заменяем картинки
$text = preg_replace('#(<img\s*(.*)\s*src=[\'|"]*([^\s\'"]+)[^>]*>)#i', '<img src="http://www.example.com/logo.jpg" />', $test);
echo $text;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху