Создать форум бесплатно: ixbb.ru :: Календарь на Май 2024 года: calendar2008.ru/2024/may/

  Reply to this topicStart new topicStart Poll

Как написать нужную регулярку?

meta-trader
  Отправлено: Jun 15 2011, 04:47 AM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 1120
Пользователь №: 1194
Регистрация:
11-October 07



Мучения с языком PHP продолжаются! lol3.gif

Есть текст получаемый из файла. Вот он:

QUOTE
var popular_forums_array=[["deti", "liveforums.ru", "«Кордицепс в жидком виде» - у…", "237", "2551", "129049"], ["handmade", "liveforums.ru", "Рукоделие. Сделано вручную. С…", "2766", "509", "4648"], ["nailssokolova", "liveforums.ru", "Форум Светланы Соколовой …", "766", "387", "7722"], ["ulis", "liveforums.ru", "Путь Одиссея", "508", "507", "19460"], ["krasnoe", "liveforums.ru", "Форум: Красное-на-Волге", "304", "431", "8598"], ["edyta", "liveforums.ru", "ЭДИТА  ПЬЕХА", "80", "23", "2123"], ["koleya76", "liveforums.ru", "Ярославский off-road клуб «Ко…", "206", "604", "5664"], ["girlfriends", "liveforums.ru", "Подружки", "124", "183", "11202"], ["dom2woman", "liveforums.ru", "Друзья по интересам", "267", "117", "134575"], ["monolith", "liveforums.ru", "Monolith S&S", "38", "238", "7616"]];


Задача создать регулярку, что бы то, что внутри кавычек "" запихать в массив - по одному значению в элемент.

Ни как не выходит.
Создал атакой в лоб гигантское выражение с кучей "(.*)" - не работает! wacko.gif

Сделал ещё несколько вариантов.
Больше подходит
CODE
$pattern3 = '/"([0-9a-z.+]*)"[,|\]]/i';

Но не создаёт элементов с названиями (потому что они русские).
Помогите ah.gif


--------------------
Нужен форум для сайта? Создать свой форум
Нравятся ролевые игры? Создать форум для ролевой игры - создай ролевую и наслаждайся игрой!
Международный сервис фришных форумов - создать форум бесплатно.
PMEmail PosterUsers WebsiteICQ
Top
dudeonthehorse
Отправлено: Jun 15 2011, 08:17 AM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 763
Пользователь №: 2933
Регистрация:
26-October 09



CODE
setlocale(LC_ALL, "ru_RU.CP1251");
перед регэкспом - должно помочь.
PMEmail PosterICQ
Top
meta-trader
Отправлено: Jun 15 2011, 10:20 AM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 1120
Пользователь №: 1194
Регистрация:
11-October 07



Спасибо, но я уже накарябал свой вариант... Ну конечно он «дикий» biggrin.gif
Сначала preg_match_all, потом preg_replace два раза и наконец-то explode. rolleyes.gif


--------------------
Нужен форум для сайта? Создать свой форум
Нравятся ролевые игры? Создать форум для ролевой игры - создай ролевую и наслаждайся игрой!
Международный сервис фришных форумов - создать форум бесплатно.
PMEmail PosterUsers WebsiteICQ
Top
Матроскин
Отправлено: Jun 15 2011, 10:22 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Так подойдет?
CODE
<?php
$var = 'var popular_forums_array=[["deti", "liveforums.ru", "«Кордицепс в жидком виде» - у…", "237", "2551", "129049"], ["handmade", "liveforums.ru", "Рукоделие. Сделано вручную. С…", "2766", "509", "4648"], ["nailssokolova", "liveforums.ru", "Форум Светланы Соколовой …", "766", "387", "7722"], ["ulis", "liveforums.ru", "Путь Одиссея", "508", "507", "19460"], ["krasnoe", "liveforums.ru", "Форум: Красное-на-Волге", "304", "431", "8598"], ["edyta", "liveforums.ru", "ЭДИТА  ПЬЕХА", "80", "23", "2123"], ["koleya76", "liveforums.ru", "Ярославский off-road клуб «Ко…", "206", "604", "5664"], ["girlfriends", "liveforums.ru", "Подружки", "124", "183", "11202"], ["dom2woman", "liveforums.ru", "Друзья по интересам", "267", "117", "134575"], ["monolith", "liveforums.ru", "Monolith S&amp;S", "38", "238", "7616"]];';

$pattern = '/["][\w]*["]/';

preg_match_all($pattern, $var, $match);

echo '<pre>';
print_r($match);
echo '</pre>';
?>


--------------------
PMEmail PosterUsers Website
Top
Матроскин
Отправлено: Jun 15 2011, 11:19 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Немного подправлю код, поскольку не тестировал его... как протестил - увидел, что не совсем то, что нужно rolleyes.gif
Так будет правильно:
CODE
<?php
$var = 'var popular_forums_array=[["deti", "liveforums.ru", "«Кордицепс в жидком виде» - у", "237", "2551", "129049"], ["handmade", "liveforums.ru", "Рукоделие. Сделано вручную. С…", "2766", "509", "4648"], ["nailssokolova", "liveforums.ru", "Форум Светланы Соколовой …", "766", "387", "7722"], ["ulis", "liveforums.ru", "Путь Одиссея", "508", "507", "19460"], ["krasnoe", "liveforums.ru", "Форум: Красное-на-Волге", "304", "431", "8598"], ["edyta", "liveforums.ru", "ЭДИТА  ПЬЕХА", "80", "23", "2123"], ["koleya76", "liveforums.ru", "Ярославский off-road клуб «Ко…", "206", "604", "5664"], ["girlfriends", "liveforums.ru", "Подружки", "124", "183", "11202"], ["dom2woman", "liveforums.ru", "Друзья по интересам", "267", "117", "134575"], ["monolith", "liveforums.ru", "Monolith S&amp;S", "38", "238", "7616"]];';

$pattern = '/"(.*?)"/i';
preg_match_all($pattern, $var, $match);

echo '<pre>';
print_r($match[1]);
echo '</pre>';
?>


--------------------
PMEmail PosterUsers Website
Top
meta-trader
  Отправлено: Jun 15 2011, 02:01 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 1120
Пользователь №: 1194
Регистрация:
11-October 07



Матроскин, попытался адаптировать твой код.. что-то не вышло.

CODE
<?php
$read = file_get_contents("http://bb.liveforums.ru/export/stats_advanced.php");

$pattern3 = '/var popular_forums_array=(.*)/i';
preg_match_all($pattern3, $read, $popylar_forum);

echo '<pre>';
print_r($popylar_forum);
echo '</pre>';

$pattern3a = '/"(.*?)"/i';
preg_match_all($pattern3a, $popylar_forum[1][0], $pattern4);

echo '<pre>';
print_r($pattern4);
echo '</pre>';

for($i=0;$i<10;$i++)
{
$url_domen=$pattern4[1][$i*6];
$url_host=$pattern4[1][$i*6+1];
$name_forum=$pattern4[1][$i*6+2];
$users=$pattern4[1][$i*6+3];
$posts=$pattern4[1][$i*6+5];

}
?>


Массивы распечатываются как надо, но вот переменным значения не присваиваются из массива... в конце кода.


--------------------
Нужен форум для сайта? Создать свой форум
Нравятся ролевые игры? Создать форум для ролевой игры - создай ролевую и наслаждайся игрой!
Международный сервис фришных форумов - создать форум бесплатно.
PMEmail PosterUsers WebsiteICQ
Top
Матроскин
Отправлено: Jun 15 2011, 03:03 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



А где видно, что не присваиваются? Может стоит вывести их на экран?
CODE
echo $url_domen. '<br />';
echo $url_host. '<br />';
echo $name_forum. '<br />';
echo $users. '<br />';
echo $posts. '<br />';

У меня выводится следующее:
QUOTE
monolith
liveforums.ru
Monolith S&S
38
7732


--------------------
PMEmail PosterUsers Website
Top
meta-trader
Отправлено: Jun 15 2011, 03:31 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 1120
Пользователь №: 1194
Регистрация:
11-October 07



Я балда smile.gif не изменил код где вывод...
Большое спасибо за помощь! wink.gif

Теперь код значительно упростился и менее ресурсоёмок.


--------------------
Нужен форум для сайта? Создать свой форум
Нравятся ролевые игры? Создать форум для ролевой игры - создай ролевую и наслаждайся игрой!
Международный сервис фришных форумов - создать форум бесплатно.
PMEmail PosterUsers WebsiteICQ
Top
Матроскин
Отправлено: Jun 15 2011, 03:41 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



Пожалуйста wink.gif


--------------------
PMEmail PosterUsers Website
Top

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0345 ]   [ 10 queries used ]   [ GZIP выключен ]