АРМАДА
средствами ПХП вырезать и заглотнуть.. -КЕРК, -ctapbiu Хелп!
На страницу 1, 2, 3, 4  След.
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 6:20 pmДобавить в избранноеОтветить с цитатой
1) средствами ПХП вырезать все что между <style> и </style>) из загруженной а переменную $pony Хтмл страничка, вырезать все что между <style> и </style>, остальное нетрогать.
(страничка идет со символами как (\r)?\n, т.е. ХТМЛ страничка это не одна строка)
вырезать все между тегами и также чтоб самих тегов(<style> и </style>) также неосталося

а тут наоборот задача типа
2) средствами ПХП заглотнуть
Также, в пеерменной $pony2 (содержимое пини2 так же как в в случаи 1. )
... средствами ПХП заглотнут из $pony2 Первую Таблицу (<table...>) сверху ...
НО! тама может быть хоть 5 таблиц заключенных друг в друга..
и поместить эту стр. в $pony3
т.е. вот как
А <table ....> lalala <table ....> lalaal </table> </table> Б
-- захватить и в пони3 поместить полность с табле тегами от А до Б

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 6:30 pmОтветить с цитатой
1) $pony = preg_replace('|<style.*?<\/style>|si', '', $pony);

2) Не совсем понял, что именно тебе нужно в данном случае Sad

ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 6:46 pmОтветить с цитатой
1. $str = preg_replace('#<style(\s[^>]+)?>.*</style>#isU', '', $str);

2. помимо этих таблиц еще таблицы есть?
если нет, то делается

preg_match('#<table(\s[^>]+)?>.*</table>#is', $str, $match);
$str = $match[0];

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 7:01 pmОтветить с цитатой
captain Keen писал(а):
1) $pony = preg_replace('|<style.*?<\/style>|si', '', $pony);

2) Не совсем понял, что именно тебе нужно в данном случае Sad



r5

я сам уже забыл, гыгы
вспомню...

вспомнил, в 2) вырезать все кроме тегов table и все что в них, + сами теги оставить..


IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 7:06 pmОтветить с цитатой
Спасибо всем, кажется работает.

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 7:09 pmОтветить с цитатой
ага, еще...
как также средствами ПХП вырезать их странички все комментарии
т.е. <!--......-->

+ также они могут быть как начало "<!--" на одной строке, а конеч ... "-->"

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 7:39 pmОтветить с цитатой
$pony = preg_replace('|<\!--.*?-->|s', '', $pony);

ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 8:10 pmОтветить с цитатой
captain Keen,
еще модификатор U необходимо добавить, так как при наличии нескольких комментариев регэксп пожадничает и порежет от начала первого, до окончания последнего, то есть:

$pony = preg_replace('|<\!--.*?-->|sU', '', $pony);

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Сб Dec 06, 2008 8:30 pmОтветить с цитатой
ctapbiu, не порежет. ? не даст. Он до первого закрывающего комментарий тэга работает. Попробуй тестануть этот регэксп на странице со многими комментариями - увидишь.

Если ты используешь модификатор U, то ? не нужен в самом регэкспе.

Так что имеем два варианта:

1) без U
$pony = preg_replace('|<\!--.*?-->|s', '', $pony);

2) c U
$pony = preg_replace('|<\!--.*-->|sU', '', $pony);

Практика, как говорится, критерий истины. Можешь попробовать и убедиться что оба примера рабочие Wink

ctapbiu
Опытный
Зарегистрирован: 06.01.2008
Сообщений: 328
Обратиться по нику
# Добавлено:Вс Dec 07, 2008 10:00 amОтветить с цитатой
а вот вопросик (?) я проглядел
так, конечно, не порежет ,)

Drinks or Beer

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Вс Dec 07, 2008 1:40 pmОтветить с цитатой
ctapbiu писал(а):
а вот вопросик (?) я проглядел

Бывает Drinks or Beer

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Вт Dec 09, 2008 2:31 amОтветить с цитатой
captain Keen, Спасибо!
ctapbiu, Спасибо!

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Вт Dec 09, 2008 2:41 amОтветить с цитатой
Цитата:
Попробуй тестануть этот регэксп на странице со многими комментариями - увидишь.



в моей страничке ($pony) пока один коментарий тама... и на первой строке (+ вся строка) bums

я просто просил чтоб дали пример для вырезки всех - на будущее мне.

эти примеры работают все.

ПС_

$pony_atskaya = explode("\n", $pony); /* неуверен что это все ... */
array_shift($pony_atskaya); /* ... удалит .... */
$pony = implode("\n", $pony_atskaya); /* ... первую строку .... ведь что такое строка в Аски ? */

гыгы...

captain Keen
Опытный
Зарегистрирован: 22.10.2008
Сообщений: 206
Обратиться по нику
# Добавлено:Вт Dec 09, 2008 10:01 amОтветить с цитатой
IseeDeadPeople писал(а):
$pony_atskaya = explode("\n", $pony); /* неуверен что это все ... */
array_shift($pony_atskaya); /* ... удалит .... */
$pony = implode("\n", $pony_atskaya); /* ... первую строку .... ведь что такое строка в Аски ? */

IseeDeadPeople, без обид, но вот после такого кода и появляются посты о том, что PHP плохой язык.
Лучше сделать вот так -
Код:
$pony = explode("\n", $pony, 2);
$pony = $pony[1];


IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18028
Обратиться по нику
# Добавлено:Вт Dec 09, 2008 6:47 pmОтветить с цитатой
я необиделся

а насчет того что я в три строки написал, так для меня пока что важно одно - работает код или нет, .. твой вариант конечно проще....
просто я вот смысл параметров дальше второго в "эксплоде" - незнаю Sad Shocked

а так спасибо!
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры