Проблема с регулярными выражениями

TheStriker

Новичок
Проблема с регулярными выражениями

Доброго времени суток!

Возникла такая проблема: В базе данных есть запись в виде - [["Sample1"]] [["Sample2"]] [["Sample3"]] . Требуется преобразовать в массив соответственно $a[0] = Sample1,$a[1] = Sample2,$a[2] = Sample3. Пытаюсь сделать это с помощью регулярного выражения. Но что-то пока безуспешно :( Возможно я не прав? Возможно есть способы сделать это более простым способом?

Код, который я использую, прилагаю:

PHP:
$stroka = '[["Sample1"]] [["Sample2"]] [["Sample3"]]';
$pattern = "#\[\[(^<*)\]\]#i";
$pm = preg_match($pattern,$stroka,$arr);
Ну вот что-то приблизительно такое.....

Заранее спасибо за любіе предложения и комментарии.
 

TheStriker

Новичок
[m]preg_match_all[/m]
Это что означает?
(^<*)
Прости за тупые вопросы, но всё же:

- в чем разница между preg_match и preg_match_all? (вопрос снимается - не заметил ссылку сразу....)
- и что должно быть на месте (^<*) в теории? (...на его месте надо указать что там любой текс может быть + кавычки и т.п....Но как?)

Просто я с регулярными сталкиваюсь можно сказать в первый раз и руководствовался книжкой.....Видать не самой лучшей....
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Striker
Запомни, пожалуйста, что в этом форуме не дают готовых ответов. А помогают достичь результатов самостоятельно.
Запомни раз и навсегда.
Все понятно?
 

Striker

Новичок
Извините. Запомню. ;)

Но ответ то я дал, а теперь пускай разбирается. ;)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
TheStriker
Просто я с регулярными сталкиваюсь можно сказать в первый раз и руководствовался книжкой.....Видать не самой лучшей....
Все ответы есть в мануале.
 

TheStriker

Новичок
Автор оригинала: Mr_Max
Striker
Запомни, пожалуйста, что в этом форуме не дают готовых ответов. А помогают достичь результатов самостоятельно.
Запомни раз и навсегда.
Все понятно?
Striker - спасибо.

Mr. Max - достиг сам. Спасибо за ссылку на мануал. Начинаю понимать - что он лучше любой книги.
 

TheStriker

Новичок
Еще один, если можно, глупый вопрос -

Как вывод массива foreach, к примеру, загнать в одну переменную. Т.е. имеем array([0]=>"Apple", [1]=>"Pear",[2]=>"orange"). Чем получить переменную $fruits = "Apple, Pear, Orange"?

Знаю что вопросы полного нуба - но всё-таки.....

Заранее спасибо.
 

TheStriker

Новичок
Автор оригинала: dimagolov
implode
Тут такая ситуация возникла.....Да - имплод склеивает массив, НО! Почему-то он склеивает массив без изменений.....:(

PHP:
foreach($arr as $key=>$val){
     $val = "[[".$val."]] ";
}
$imp = implode(","$arr);
Вот такой код. И возвращает он мне массив БЕЗ квадратных скобок......:(

Я уже в потерях....2-ая проблема за 2 часа....
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
TheStriker
Вообще в коде Parse error;
Постить в форум нужно _реальный_ код.

-~{}~ 29.11.07 21:21:

И возвращает он мне массив БЕЗ
Откуда такая уверенность?
Как проверяли?
Мысли "почему" есть?
 

TheStriker

Новичок
Откуда такая уверенность?
Как проверяли?
Мысли "почему" есть?
print_r($imp);

- вот отсюдова и уверенность.....

И как не парадоксально - код выполняеться - Parse error Не выдает ......
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Если php5
Нужно работать по ссылке.

Если php4
Обращаясь к значению $arr через его ключ

[m]foreach[/m]

-~{}~ 29.11.07 22:12:

.


Пропущена запятая
 

TheStriker

Новичок
Автор оригинала: Mr_Max
Если php5
Нужно работать по ссылке.

Если php4
Обращаясь к значению $arr через его ключ

[m]foreach[/m]
Не совсем понял. Я методику и брал с ссылки....Там пример с умножением на 2 всех элементов массива. Разница у меня только в том - что данные у меня в массиве строковые и соответственно мне с текстом надо выполнить не мат.операцию, а просто облачить в квадратные скобки. Теоретически предложенный мной код должен работать....

Кстати, если делать в цикле foreach:
PHP:
echo $val = "[[".$val."]] ";
- то выдает с кавычками....А вот переписывать массив почему-то не хочет.....

-~{}~ 29.11.07 22:12:
Пропущена запятая
А вот за это извиняюсь. Не досмотрел....Код был не скопирован, а набран - видать здесь и допустил ошибку....
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Не совсем понял. Я методику и брал с ссылки....Там пример с умножением на 2 всех элементов массива
Советую обратить внимание на текст, что написан в круглых скобках ф-ции [m]foreach[/m]

TheStriker
Теоретически предложенный мной код должен работать....
В Вашем случае теорерически Вы работаете не со значением $arr[$key] а с... как-бы это сказать... копией этого значения, которое $value

Найдите отличия в Вашем случае и в случае примера из мануала.
 

dimagolov

Новичок
TheStriker, вот я не пойму. ман по implode читался или нет?
у меня стойкое ощущение что нет, так как implode одним вызовом решает задачу, которую ты поставил и на которую я дал тебе implode.
 

dimagolov

Новичок
Mr_Max
да в чем другом? ему нужно склеить массив в строку. ну добавить вокруг каждого элемента скобки. для этого foreach нафиг не нужен - достаточно одного implode & 2-х конкатенаций.
 
Сверху