Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбивка в массив, explode 
:(
    Опции темы
Aliance
Дата 20.5.2005, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Как пользоватся двойным explode().
Задача такая, есть код страницы, которую я получаю с помощью file_get_contents.
Там примерно такой код:
Цитата

login=Альянс© 123
login_online=
id=1031213947
align=7
zodiac=9
blocked=
img=0
room_name=
battle_id=

Разбиваю его explode()`ом на массив, по \n. Все отлично. Получается, в первом елементе содержится: login=Альянс© 123, вот код:
Код

<?php
if(!function_exists('file_get_contents')) {
   function file_get_contents($file) {
       $file = file($file);
       return !$file ? false : implode('', $file);
   }
}

$infoText = file_get_contents('http://...........');

$lists = explode("\n", $infoText);

echo "Имя: {$lists[0]}";
// выводит login=Альянс© 123


Теперь, нужно эти все данные так же разбить на массив. Мне нужно получить все, что нах-ся после =, но есть суровые ограничения из-за которых мне эта задача не под силу:
( я буду нижу значением называть ту часть строки, котора лежит правее =)
  • в значении могут быть пробелы
  • в значении могут быть знаки =
  • в значении может ничего не быть
  • в значении могут быть спецсимволы/кириллица/латиница/Юникод

Помогите разбить smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 20.5.2005, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Ну я думаю тут проще регуляркой, когда все данные в одной строке.
Код
<?php
$str="login=Àëüÿíñ© 123
login_online=
id=1031213947
align=7
zodiac=9
blocked=
img=0
room_name=
battle_id=;;";
preg_match_all( "#=(.*?)(\n|$)#i" , $str , $matches , PREG_PATTERN_ORDER );
print_r($matches[1]);

?>


Это сообщение отредактировал(а) Mal Hack - 20.5.2005, 22:39
PM ICQ   Вверх
Aliance
Дата 20.5.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Эм, код пока не проверял. Но т.к. я трезво оцениваю свои силы - то не хочу тратить свое время, т.к. знаю что сам код не переделаю. Не мог бы ты сохранить то, что есть у меня... Т.е. первых explode()... ведь данные у меня динамические...я ж все описал smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 20.5.2005, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Aliance при моем коде тебе не нужны explode'ы...
PM ICQ   Вверх
Aliance
Дата 21.5.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Mal Hack
Мне выводит Array. А как вывести опр. его части, не понимаю smile
Например, мне нужно вывести значение id=1031213947, т.е. 1031213947 - как это сделать?
Индекс у него 2 (третий элемент).
Код

echo $matches[2];

не то...
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 21.5.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код
<?php
$str="login=xcvx 123
login_online=
id=1031213947
align=7
zodiac=9
blocked=
img=0
room_name=
battle_id=;;";
preg_match_all( "#(.+?)=(.*?)(?:\n|$)#i" , $str , $matches , PREG_PATTERN_ORDER );
for( $i = 0 ; $i< count($matches[1]) ; $i++ )
{ print $matches[1][$i] . " = " . $matches[2][$i]."<br>";  }
?>

Вывод:
Цитата
login = xcvx 123
login_online =
id = 1031213947
align = 7
zodiac = 9
blocked =
img = 0
room_name =
battle_id = ;;


Еще глянь: http://php.net/parse_ini_file
PM ICQ   Вверх
Aliance
Дата 21.5.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Mal Hack
Т.е. это разобьет его на 2 - лево право?
Мне то, что слева не нужно smile
Т.е. обращаться так:
Код

$matches[2][0]
$matches[2][1]
$matches[2][2]
$matches[2][3]


А
Код

$matches[1][х]

выдаст нам левую часть?
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 21.5.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Aliance е-мое. Только для правой части я тебе выше код давал.
PM ICQ   Вверх
Aliance
Дата 21.5.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Mal Hack
Все, разобрался. 1 - лево. 2 - право. Спасибо.
PM MAIL WWW ICQ Skype   Вверх
IZ@TOP
Дата 22.5.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Aliance, а не проще считывать файл в строки (file(path)) а уже потом explode использовать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Aliance
Дата 22.5.2005, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



IZ@TOP
Этот файл не на моем домене находится :-) Собсно вопрос уже закрыт. Мне получилось, Mal Hack помог smile
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 22.5.2005, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



IZ@TOP лишние операции, лишние переменные. Памяти кушает больше...
По времени выполнения в принципе равнозначно.
PM ICQ   Вверх
Opik
Дата 23.5.2005, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
не проще... smile он инфу просто не получит таким образом.
PM MAIL Skype   Вверх
IZ@TOP
Дата 23.5.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Mal @ 22.5.2005, 19:30)
IZ@TOP лишние операции, лишние переменные. Памяти кушает больше...

Где тут лишние переменные??? Но выполнятся наверное будет все же равнозначно...

Opr, в таком случае file_get_contents тоже не сработает (но это уже вопрос конфигурации).


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 23.5.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
вопрос не в конфигурации, а к тому скрипту, к которому идет коннект smile он просто перекинет его на главную.
PM MAIL Skype   Вверх
IZ@TOP
Дата 24.5.2005, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Opr @ 23.5.2005, 21:41)
вопрос не в конфигурации, а к тому скрипту, к которому идет коннект  он просто перекинет его на главную.

Ничего не понимаю... причем тут это? Может объяснишь подробнее почему при использовании file_get_contents он пиолучит данные а при использовании file не получит???


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 24.5.2005, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
по идее при помощи file_get_contents тоже не должен получать.
Добавлено @ 03:29
Странно smile всё таки получит...
но в inf.pl (БКном )
есть строчки:

Код

        if ($ENV{"HTTP_USER_AGENT"}=~/PHP\//) { 
                print "Location: /index.html\n\n";
                goto FASTCGI_EXIT;
        }

и когда тогда это условие будет верным?
PM MAIL Skype   Вверх
IZ@TOP
Дата 24.5.2005, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Opr, а тут речь разве о combats.ru идет? Что-то я уже запутался.

PS Извиняюсь за тупость, у меня всю ночь зуб болит, я спать немогу и думать тоже... таблетки уже не помогают...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Aliance
Дата 24.5.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



smile
Цитата(Opr @ 24.5.2005, 04:25)
но в inf.pl (БКном )

Цитата(IZ @ 24.5.2005, 05:02)
Opr, а тут речь разве о combats.ru идет?

как вы догадались smile smile smile
smile

Дак ведь у меня все работает, зачем спорить-т )))
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 24.5.2005, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
причем?))))
Цитата
Там примерно такой код:

Цитата 

login=Альянс© 123
login_online=
id=1031213947
align=7
zodiac=9
blocked=
img=0
room_name=
battle_id= 
- из первого поста.
http://devilscity.combats.ru/inf.pl?login=...Element&short=1 и тут посмотри... ничего схожего не видишь?*)))
Aliance за 2 кода кодинга узнаю любую часть smile))
Цитата
Дак ведь у меня все работает, зачем спорить-т )))

при частом коннекте будет блок по ИП smile
PM MAIL Skype   Вверх
Aliance
Дата 24.5.2005, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(Opr @ 24.5.2005, 20:26)
при частом коннекте будет блок по ИП

знам... ну это при очем частом smile Ну, в общем-то я доволен smile))
ЗЫ: ты такое делал? Кстати, можно пообщаться на эту тему, пиши на e-mail если будет желания (ася не работает временно)
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 25.5.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Aliance
делал smile и не только такое) ну не сказал бы... рекомендуемо 1 разпрос в 1 секунд.
PM MAIL Skype   Вверх
G0rinich
Дата 18.9.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 21.8.2006

Репутация: 1
Всего: 1



Ну что за глупости.
Зачем использовать регулярные выражения?
Чем вам split() (он же explode()) не угодил?

split() имеет не 2, а 3 параметра!!!
Цитата(Aliance @  20.5.2005,  22:14 Найти цитируемый пост)
в значении могут быть пробелы
в значении могут быть знаки =
в значении может ничего не быть
в значении могут быть спецсимволы/кириллица/латиница/Юникод


Код

$str=array(
    'param=123',
    'param=   123',
    'param =  123',
    'param=флывар',
    'param=1=2=3',
    'param= 1= 2 = 3',
    'param=',
    'param=СЋРЅРёРєРѕРґ', //utf-8
    );

foreach ($str as $val) print_r(split(' *= *', $val, 2));


По-моему все предусмотрел. И никаких огромных регов ;)
PM MAIL   Вверх
G0rinich
Дата 18.9.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 21.8.2006

Репутация: 1
Всего: 1



Цитата(Aliance @  20.5.2005,  22:14 Найти цитируемый пост)
if(!function_exists('file_get_contents')) {
   function file_get_contents($file) {
       $file = file($file);
       return !$file ? false : implode('', $file);
   }
}

$infoText = file_get_contents('http://...........');

$lists = explode("\n", $infoText);


Идиотизм!!!
file_get_contents() отличается от file() только тем, что возвращает содержимое файла одной строкой.

По сути код звучит так:
Код

Если (нет ф-ии file_get_contents) {
    загружаем файл с помощью file
    склеиваем полученный массив в одну строку
}
иначе загружаем файл одной строкой

разбиваем файл на строчки


Где блин логика?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.