![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
DioNiR |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
Всем Здрасте
![]() Есть такая проблема ![]() Допустим мы имеем текст:
Нужно разбить этот текст на массив, причем массив должен иметь такой же вид. Вся проблема в том что я не могу найти все схождения этих "тегов". Если брать простой регуляркой типо:
То вхождение будет до первого [/Tag]. Но мне надо чтоб были все. Собственно вопрос как этот текст превратить в массив с такими же вхождениями. Отмечу что не обязательно кодом ![]() Можно просто натолкнуть меня на мысль, или рассказать как решается проблема --------------------
Думали это конец? Ха, всё только начинается. |
||||
|
|||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Если текст именно такой, то
замените все '[Tag]' на ',array(' '[/Tag]' на ')' затем сделайте trim($str,',') чтобы убрать первую запятую и добавьте в начало строки '$myVar = ' а в конец ';' После чего eval(строка) -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
я бы переделал тег в <div> или <tag> str_replace
и воспользовался классом http://habrahabr.ru/post/110112/ под ваши задачи в инструкции не написано что если текст приходит битым то нужно чтобы html код был полностью, с кодировкой в метотегах массив получится немного другим но с вложенностью это теория но должно получится и главное все без eval )) -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
тока проверил массив не такой строится
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Sanchezzz, попробуйте думать что ли.
Иногда бывает полезно. В данном конкретном случае eval вполне решает вопрос. Код к вычислению
дамп переменно $myVar после eval
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Fortop eval это зло и глобал тоже зло вполне есть способы написания сладкого решения...
А знаете что произойдет если в массиве будет содержатся функция аля sql атака вот поэтому мой минус вам в ответ обоснованный Это сообщение отредактировал(а) Sanchezzz - 15.4.2012, 11:43 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Sanchezzz, читать умеем?
Рекомендую перечитать подробнее то, что я написал. Если автор пытается таким образом обрабатывать что-то другое, то ССЗБ. При всем этом, мой вариант работает, а ваши тыкания пальцем в небо нет.
Охо-хо ![]() ![]() И может расскажете, при каких условиях с globals начинаются проблемы? Или вы из категории тех, кто взял не пониманием, а заучиванием? Это сообщение отредактировал(а) Fortop - 15.4.2012, 16:34 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Про эвал я вам уже написал любой уместный синтаксис PHP будет выполнятся. А если эти теги будет заполнять посетитель сайта, такой же смышленый как я?) я лично поступлю на месте пользователя как человек знающий хотя бы минимальные знания о пхп и его синтаксис убить систему сайта потому что это весело и будет уроком что так делать было нельзя .
Глобальную переменную может случайно переопределить. Получим сложно отлавливаемую ошибку. Без global улучшается читабильность кода. Также другой кодер копаясь вашем коде может не понять откуда эта переметная появилась Также глобальные переменные всегда весят в памяти когда нежели локальные освобождаются (люблю экономить каждый байт так легче на душе ) Также я очень много работал с сайтами написанных времен PHP4 и когда global у программистах был как икона всюду и везде использовался. Лично мое мнение код содержащий global,eval столь ужасен что можно приравнять govnoкоду. Это сообщение отредактировал(а) Sanchezzz - 15.4.2012, 21:54 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
DioNiR, поиск в гугле по словам "жадность квантификатора" должна решить проблему с регулярными выражениями.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |