отделить html текст

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

Шардик

Постоялец
Регистрация
21 Ноя 2007
Сообщения
54
Реакции
13
имею регулярку:
Код:
"<span style="font-weight: bold">\xCF+.(.*)\s++.(.*)\s++.(.*)\s++.(.*)\s++.(.*)\s++.(.*)\s
пытаюсь вывести на странице код html до строки <span style="font-weight: bold">Продолжительность: </span>01:15:31 :
Код:
<span style="font-size: 20px; line-height: normal">Алеша Попович и Тугарин Змей/Alesha Popovich and Tygarin snakes (2004) DVDRip</span>
<br />
<br />
<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="http://dxp.ru/photos/09082214220113639_f0_0.jpg" id="postImgAligned" class="postImg" alt="" /></div><span style="font-weight: bold">Страна: </span>Россия
<br />
<span style="font-weight: bold">Режиссер: </span>Константин Бронзит
<br />
<span style="font-weight: bold">В ролях: </span>Олег Куликович, Сергей Маковецкий, Лия Медведева, Дмитрий Высоцкий, Анатолий Петров, Михаил Черняк
<br />
<br />
<span style="font-weight: bold">Субтитры: </span>русские
<br />
<span style="font-weight: bold">Сюжет фильма: </span> Упустив злодеев тугарских с данью жителей Ростова, богатырь Алеша Попович должен восстановить свое доброе имя, вернуть золото и прогнать с земли русской Тугарина Змея. Помогают Алеше в этом нелегком деле конь Юлий Цезарь, который не в меру говорлив и при этом трусоват, красна девица Любава, Дед с Бабкой и ослик Моисей... Алеша с друзьями преодолевают множество препятствий, и пусть у него не всегда все получается складно - настанет тот день, когда его по праву можно будет назвать богатырем!
<br />
<br />
[COLOR="DarkRed"]<span style="font-weight: bold">Продолжительность: </span>01:15:31
<br />
<span style="font-weight: bold">Качество видео: </span>DVDRip
<br />
<span style="font-weight: bold">Видео: </span>кодек : DivX, размер кадра: 24бит, битрейт : 1265 кб/с
[/COLOR]<br />
<span style="font-weight: bold">Аудио: </span>язык: Русский, перевод: оригинал, кодек: MP3, битрейт: <br />129 кб/с
<br />
[spoiler=скриншоты]<img src="http://dxp.ru/photos/09082214220113639_f19_0.jpg" border="0" onload="imgFit(this, screen.width-400);" onclick="imgFit(this, screen.width-400);" alt="" />
<span style="font-size: 20px; line-height: normal">Алеша Попович и Тугарин Змей/Alesha Popovich and Tygarin snakes (2004) DVDRip</span>
<br />
<br />
<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="http://dxp.ru/photos/09082214220113639_f0_0.jpg" id="postImgAligned" class="postImg" alt="" /></div><span style="font-weight: bold">Страна: </span>Россия
<br />
<span style="font-weight: bold">Режиссер: </span>Константин Бронзит
<br />
<span style="font-weight: bold">В ролях: </span>Олег Куликович, Сергей Маковецкий, Лия Медведева, Дмитрий Высоцкий, Анатолий Петров, Михаил Черняк
<br />
<br />
<span style="font-weight: bold">Субтитры: </span>русские
<br />
<span style="font-weight: bold">Сюжет фильма: </span> Упустив злодеев тугарских с данью жителей Ростова, богатырь Алеша Попович должен восстановить свое доброе имя, вернуть золото и прогнать с земли русской Тугарина Змея. Помогают Алеше в этом нелегком деле конь Юлий Цезарь, который не в меру говорлив и при этом трусоват, красна девица Любава, Дед с Бабкой и ослик Моисей... Алеша с друзьями преодолевают множество препятствий, и пусть у него не всегда все получается складно - настанет тот день, когда его по праву можно будет назвать богатырем!
<br />
<br />
но некорректно режет, если в конец кода добавляется еще 2-3 строки.
существует ли способ быстрой кастрации текста?
спасибо за помощь.
 
PHP:
echo(substr($html, 0, strpos($html, '<span style="font-weight: bold">Продолжительность')));

не подходит?

p.s. не совсем правда понял, что нужно вывести то..html код до продолжительности или разбить этот кусок кода
 
PHP:
echo(substr($html, 0, strpos($html, '<span style="font-weight: bold">Продолжительность')));
не подходит?
p.s. не совсем правда понял, что нужно вывести то..html код до продолжительности или разбить этот кусок кода
спасибо.. обязательно попробую.. [проверил, работает]
 
а средством функции preg_replace можно сделать?

предположим, так:
требуется отсечь текст функцией substr - $resultat77 = substr($postrow[$i]['post_html'], 0, strpos($postrow[$i]['post_html'], '</div><!--/spoiler-body-->'));

текст отсекается

затем задаю $resultat77 = preg_replace('/<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="/', '<div class="postImg-wrap" style="float: left; clear: left; padding: 5px 5px 1px;"><img width="150" height="200" src="', $postrow[$i]['post_html']);

работает только последнее, отсекатель не робит( (дело естественно, в приоритете preg_replace)
больше ниче в данный момент на ум не приходит(((
то есть, либо первое, либо второе использовать - одновременно не канает(
 
дело естественно, в приоритете preg_replace

Дело, естественно, в том, что ты поочереди обрабатываешь один и тот же текст сначала первой функцией, потом второй (ей так же достаётся оригинал).

Во втором случае вместо $postrow[$i]['post_html'] логичнее поставить $resultat77 и здесь больше подходит функция str_replace.
 
Дело, естественно, в том, что ты поочереди обрабатываешь один и тот же текст сначала первой функцией, потом второй (ей так же достаётся оригинал).
Во втором случае вместо $postrow[$i]['post_html'] логичнее поставить $resultat77 и здесь больше подходит функция str_replace.

сделал как вы сказали...
Код:
while ( $postrow[] = mysql_fetch_array($result)) ;
// вывод

echo "<table>";

for($i = 0; $i < $num; $i++)
{
$letters = array('/<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="/', '/<span style="font-weight: bold">\xCF+.(.*)/','/<span style="font-weight: bold">\xC0+.(.*)/','/\[spoiler=скриншоты]\](.*?)\[\/div\]/is');
$fruit   = array('<div class="postImg-wrap" style="float: left; clear: left; padding: 5px 5px 1px;"><img width="150" height="200" src="', '','','');

[B]$resultat77 = substr($postrow[$i]['post_html'], 0, strpos($postrow[$i]['post_html'], '</div><!--/spoiler-body-->'));
$resultat = str_replace($letters, $fruit, $resultat77);
[/B]echo "<tr>
         <td>".$postrow[$i]['topic_title']."</td>
         <td>".$postrow[$i]['topic_time']."</td></tr>

       <tr><td colspan=\"2\"><a href=http://dxp.ru/viewtopic.php?t=".$postrow[$i]['topic_id'].">".$resultat."</a></td></tr>";
}

выполняется только $resultat77 = substr($postrow[$i]['post_html'], 0, strpos($postrow[$i]['post_html'], '</div><!--/spoiler-body-->'));
а str_replace вообще не фурычит..
 
если этот метод недействителен или зашел в тупик, можно ли как то из html кучи выдрать только 2 строчки:
PHP:
<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="http://dxp.ru/photos/09082214220113639_f0_0.jpg" id="postImgAligned" class="postImg" alt="" /></div>
и
PHP:
<span style="font-weight: bold">Сюжет фильма: </span> Упустив злодеев тугарских с данью жителей Ростова, богатырь Алеша Попович должен восстановить свое доброе имя, вернуть золото и прогнать с земли русской Тугарина Змея. Помогают Алеше в этом нелегком деле конь Юлий Цезарь, который не в меру говорлив и при этом трусоват, красна девица Любава, Дед с Бабкой и ослик Моисей... Алеша с друзьями преодолевают множество препятствий, и пусть у него не всегда все получается складно - настанет тот день, когда его по праву можно будет назвать богатырем!
<br />
с уважением еще раз к помогающим. спасибо!
 
PHP:
$letters = array('/<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="/', '/<span style="font-weight: bold">\xCF+.(.*)/','/<span style="font-weight: bold">\xC0+.(.*)/','/\[spoiler=скриншоты]\](.*?)\[\/div\]/is');
Для str_replace нужно указать точную строку что искать и на что заменить, никаких регулярных выражений туда совать не нужно ))
Вот конкретно в этом случае можно обойтись str_replace, т.к. регулярные выражения на деле совсем не используются:
затем задаю $resultat77 = preg_replace('/<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="/', '<div class="postImg-wrap" style="float: left; clear: left; padding: 5px 5px 1px;"><img width="150" height="200" src="', $postrow[$i]['post_html']);
 
Для str_replace нужно указать точную строку что искать и на что заменить, никаких регулярных выражений туда совать не нужно ))
Вот конкретно в этом случае можно обойтись str_replace, т.к. регулярные выражения на деле совсем не используются:

спасибо, получилось так:
PHP:
for($i = 0; $i < $num; $i++)
{
$letters = array('<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="', '/<span style="font-weight: bold">\xCF+.(.*)/','"font-family:"','/<span style="font-weight: bold">Продолжительность.(.*)\s++/');
$fruit   = array('<div class="postImg-wrap" style="float: left; clear: left; padding: 5px 5px 1px;"><img onload="imgFit(this, screen.width-400);" onclick="imgFit(this, screen.width-400);" width="150" height="200" src="', 'font-family:Verdana','тест');

$resultat77 = str_replace($letters, $fruit, $postrow[$i]['post_html']);

$resultat = substr($resultat77, 0, strpos($resultat77, '<div class="spoiler'));

echo "<tr>
<!--        <td>".$postrow[$i]['topic_title']."</td> -->
         <td>".$postrow[$i]['topic_time']."</td></tr>

       <tr><td width=\"90%\" cellpadding=\"4\" cellspacing=\"4\"><a href=http://dxp.ru/viewtopic.php?t=".$postrow[$i]['topic_id'].">".$resultat."</a></td></tr>";
}
echo "<table>";

p.s. все-таки хотелось вытаскивать конкретные <span>...</span>
есть такая возможность?
 
Вот этот мой комментарий:
и здесь больше подходит функция str_replace.
касается только вот этого куска кода, который я видел на тот момент:
PHP:
$resultat77 = preg_replace('/<div class="postImg-wrap" style="float: right; clear: right; padding: 4px 4px 2px;"><img src="/', '<div class="postImg-wrap" style="float: left; clear: left; padding: 5px 5px 1px;"><img width="150" height="200" src="', $postrow[$i]['post_html']);
Потом в коде появились ещё 2 span'а с реальными регулярками, там уже str_replace не подходит. Надо определиться: либо str_replace со статично заданными строками, либо preg_replace с регулярками.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху