Модераторы: 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0949 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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