Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

17.12.2008, 16:39
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Во первых всё работает. Это раз. Во вторых (правда не знал, что ты не знаешь таких эелементарных вещей) - если ты проверяешь на исходном тексте в .txt файле, то всё должно быть написано в одну строчку. Никаких <br> я там не увидел.
ЗЫЖ Если все сохранить в .txt в одну строку и запустить мою регулярку - всё прекрасно работает
|
|
|

17.12.2008, 16:46
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
PHP код:
<?php
$in=
'<div class="a1">
<div class="b1">
<div class="c1">
sometext1
</div>
<div class="c2">
sometext2
</div>
</div>
</div>
<div class="a1">
<div class="b1">
<div class="c1">
sometext3
</div>
<div class="c2">
sometext4
</div>
</div>
</div>';
if (preg_match_all('|<div(.*)class(.*)>(.*)</div>|Ui', $in, $result))
print_r ($result); else echo 'Нету такого';
результат без модификатора s:
Результат C модификтором s:
Код:
Array
(
[0] => Array
(
[0] => <div class="a1">
<div class="b1">
<div class="c1">
sometext1
</div>
[1] => <div class="c2">
sometext2
</div>
[2] => <div class="a1">
<div class="b1">
<div class="c1">
sometext3
</div>
[3] => <div class="c2">
sometext4
</div>
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
)
[2] => Array
(
[0] => ="a1"
[1] => ="c2"
[2] => ="a1"
[3] => ="c2"
)
[3] => Array
(
[0] =>
<div class="b1">
<div class="c1">
sometext1
[1] =>
sometext2
[2] =>
<div class="b1">
<div class="c1">
sometext3
[3] =>
sometext4
)
)
Вопросы?
Последний раз редактировалось Gifts; 17.12.2008 в 16:49..
|
|
|

17.12.2008, 16:54
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Нет, ну молодец конечно, просто это не надо в случае парсинга реальной html-страницы
|
|
|

17.12.2008, 16:58
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Реальная html страница:
PHP код:
<?PHP $in="<html>\r\n<body>Надеюсь это не откровение, что в ХТМЛ можно вставлять переводы строк? Хоть они и не будут показаны в браузере, однако в исходном коде будут пристутствовать \r\n</body>\r\n</html>";
echo $in;
Вопрос актуален - подскажите рекурсивную регулярку для любого количества вложеных дивов
|
|
|

17.12.2008, 17:08
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
В качестве доказательсва моей правоты - парсер зе беста с Баша, без всяких там "s"
PHP код:
<?
$filename = file_get_contents('http://bash.org.ru/best');
$patern = '|<div>(.*)</div>|Ui';
preg_match_all($patern, $filename, $result);
print_r ($result);
?>
В исходниках сплошные красные абзацы  )) Учим html и не тупим  Peace
|
|
|

17.12.2008, 17:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Pashkela
PHP код:
$patern = '|<body(.*)</body>|Ui';
Проверь, как же так, бедааа, тэг <body есть, закрывающий </body> есть, а ничего не выводит.. Бедаааа. А то что в дивах самих цитат нет переводов строк, как бы логично. Данные берутся из БД и следить за опрятностью кода - не нужно
Ну давай расскажи мне что я не прав)
|
|
|

17.12.2008, 17:27
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
лучше выложу тебе код на твой конкретный случай, раз тебе так надо
PHP код:
<?
$in=
'<div class="a1">
<div class="b1">
<div class="c1">
sometext1
</div>
<div class="c2">
sometext2
</div>
</div>
</div>
<div class="a1">
<div class="b1">
<div class="c1">
sometext3
</div>
<div class="c2">
sometext4
</div>
</div>
</div>';
if (preg_match_all('/<div class="a1">(.*)<\/div>/s', $in, $result))
echo 'Оле!'. "\r\n"; else echo 'Нету такого';
$t = explode("\r\n", $result[0][0]);
$count = count($t);
for ($i=0;$i<$count;$i++)
{
if (!empty($t[$i])) {echo $t[$i];}
}
?>
Последний раз редактировалось Pashkela; 17.12.2008 в 17:36..
|
|
|

17.12.2008, 17:41
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
$patern = '|<body(.*)</body>|Ui';
потому что закрыть забыл первый тег ">"
правильно так:
$patern = '|<body>(.*)</body>|Ui';
|
|
|

17.12.2008, 18:01
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Pashkela Не пиши по моему вопросу ничего плиз. Вы опасны для моего мозга
лучше выложу тебе код на твой конкретный случай, раз тебе так надо
PHP код:
<?
$in=
'<div class="a1">
<div class="b1">
<div class="c1">
sometext1
</div>
<div class="c2">
sometext2
</div>
</div>
</div>
<div class="a1">
<div class="b1">
<div class="c1">
sometext3
</div>
<div class="c2">
sometext4
</div>
</div>
</div>';
if (preg_match_all('/<div class="a1">(.*)<\/div>/s', $in, $result))
echo 'Оле!'. "\r\n"; else echo 'Нету такого';
$t = explode("\r\n", $result[0][0]);
$count = count($t);
for ($i=0;$i<$count;$i++)
{
if (!empty($t[$i])) {echo $t[$i];}
}
?>
Эт имба код - прогнать через жадную регулярку, и вывести код построчно, я бы так не сумел
$patern = '|<body(.*)</body>|Ui';
потому что закрыть забыл первый тег ">"
правильно так:
$patern = '|<body>(.*)</body>|Ui';
Афигеть, зайди на этот баш, открой исходный код страницы и посмотри что начальный тэг тела документа выглядит: <body style="margin: 0px;"> Поэтому тэг СПЕЦИАЛЬНО не закрыт
|
|
|

17.12.2008, 18:04
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
"Эт имба код - прогнать через жадную регулярку, и вывести код построчно, я бы так не сумел"
Зато рабочий
"Вы опасны для моего мозга"
Конечно, неприятно осознавать, когда тебе знаниями по мозгам надавали  Выкладывай хоть какую-то свою рабочую не " имба" версию, ламота  ))
ЗЫЖ Развелось псевдо-спецов. Лично тебе помогать больше не буду, если ты так просишь. Ему рабочий код дали - а оно тут пузыри пускает сидит. Ппц. Извините, простите, что выложил вас вероятно не самое оптимальное решение вашей проблемы. Больше не повторится
"Афигеть, зайди на этот баш"
Молодой человек, если вы ничего не понимаете в регулярках, то лучше не выё, в тот момент мне конкретно на баш уже было пох. А ваш вариант -
$patern = '|<body(.*)</body>|Ui';
полный бред 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|