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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Супер explode через regexp, строка1 "это строка 2" стр3 стр4 "стр 5" 
:(
    Опции темы
Elfet
  Дата 6.4.2005, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Нужно собрать массив из
Цитата
строка1 "это строка 2" стр3 стр4 "стр 5"

Код
строка1
это строка 2
стр3
стр4
стр 5

Разделитель - один пробел smile

smile

Прошу прощения не смог найти и сам тоже не смог smile smile


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


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


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

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



preg_split smile
PM ICQ   Вверх
S.A.P.
Дата 6.4.2005, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Mal Hack а строку в кавычках возьмет? smile
PM MAIL   Вверх
Mal Hack
Дата 6.4.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А почему нет-то.. Надо просто рэг сделать, а щас голова не варит. Пока вот такой вариант:
Код
$str = 'строка1 "это строка 2" стр3 стр4 "стр 5"';
preg_match_all( "#(?:[\w\d]+|(?:(\"|\')[\w\d\s]+\\1))#i" , $str , $matches );
print(implode("<br>",$matches[0]));

PM ICQ   Вверх
Elfet
Дата 7.4.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Mal Hack, что то странно этот твой код работает smile


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


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


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

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



Цитата(Elfet @ 7.4.2005, 12:59)
Mal Hack, что то странно этот твой код работает smile

В плане? Поясни.
PM ICQ   Вверх
Ринат
Дата 7.4.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как вариант каждую строку объявляем переменной, потом compact (), но проще граммотный рег написать наверное, хотя значениями переменных могут быть и массивы
курим ман (вместе)
Добавлено @ 16:53
http://ru2.php.net/manual/ru/function.compact.php
PM MAIL   Вверх
Elfet
Дата 7.4.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Цитата(Mal @ 7.4.2005, 13:00)
В плане? Поясни.

Всмысле все в порядке smile Это я просто ошибся smile

Цитата
граммотный рег написать

а вот это у меня никак и не удаётся smile smile



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


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


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

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



Цитата(Elfet @ 7.4.2005, 20:34)
Всмысле все в порядке smile Это я просто ошибся smile

Ну дык пользуйся наздоровье smile
PM ICQ   Вверх
Elfet
Дата 7.4.2005, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Цитата(Mal @ 7.4.2005, 21:07)
Ну дык пользуйся наздоровье

угу спасибо! smile


Всё же мне хочется сделат через регехр полностью smile


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


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


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

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



Цитата(Elfet @ 7.4.2005, 21:20)
Всё же мне хочется сделат через регехр полностью smile

preg-split не получится.
Почему: гнадо в паттерне указывать ", а следовательно при разбивке они будут теряться.
так что только preg_match_all, который разбивает на массив.
PM ICQ   Вверх
Elfet
Дата 8.4.2005, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Цитата(Mal @ 7.4.2005, 22:55)
гнадо в паттерне указывать ", а следовательно при разбивке они будут теряться.

так я их и так удаляю smile мне они совсем ни к чему smile


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


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


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

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



Все равно не получится. Ты в прег-сплите указываешь разделитель, при этом ты не можешь указать интервал для этого разделителя, т.е. чтобы не рассматривать пробелы внутри ". Юзай preg_match %) тоже самое smile
PM ICQ   Вверх
Elfet
Дата 8.4.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



ладно так и быть smile


--------------------
PM MAIL WWW Skype   Вверх
Elfet
Дата 10.4.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Вот сделал, правда не через регеп smile может пригодится кому -
Код

<pre>
<?php

$str = 'ñòðîêà1 "ýòî ñòðîêà 2" ñòð3 ñòð4 "ñòð 5"';

$arr=array();
$karr=0;
$inkav=false;
for( $i=0; $i<strlen($str); $i++ )
{
 if($str[$i] != "\"")
 {
  if(!$inkav)
  {
   if($str[$i] != " ")
   {
    @$arr[$karr] .= $str[$i];
   }
   else
   {
    $karr++;
   }
  }
  else
  {
   @$arr[$karr] .= $str[$i];
  }
 }
 else
 {
  if(!$inkav)
  $inkav=true;
  else
  $inkav=false;
 }
}

print_r($arr);
?>



--------------------
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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