| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Разбивка текста в массив |
| Автор: DioNiR 14.4.2012, 01:08 | ||||
| Всем Здрасте Есть такая проблема Допустим мы имеем текст:
Нужно разбить этот текст на массив, причем массив должен иметь такой же вид. Вся проблема в том что я не могу найти все схождения этих "тегов". Если брать простой регуляркой типо:
То вхождение будет до первого [/Tag]. Но мне надо чтоб были все. Собственно вопрос как этот текст превратить в массив с такими же вхождениями. Отмечу что не обязательно кодом Можно просто натолкнуть меня на мысль, или рассказать как решается проблема |
| Автор: Fortop 14.4.2012, 06:30 |
| Если текст именно такой, то замените все '[Tag]' на ',array(' '[/Tag]' на ')' затем сделайте trim($str,',') чтобы убрать первую запятую и добавьте в начало строки '$myVar = ' а в конец ';' После чего eval(строка) |
| Автор: Sanchezzz 14.4.2012, 10:43 |
| я бы переделал тег в <div> или <tag> str_replace и воспользовался классом http://habrahabr.ru/post/110112/ под ваши задачи в инструкции не написано что если текст приходит битым то нужно чтобы html код был полностью, с кодировкой в метотегах массив получится немного другим но с вложенностью это теория но должно получится и главное все без eval )) |
| Автор: Sanchezzz 14.4.2012, 11:06 |
| тока проверил массив не такой строится |
| Автор: Fortop 14.4.2012, 14:27 | ||||
| Sanchezzz, попробуйте думать что ли. Иногда бывает полезно. В данном конкретном случае eval вполне решает вопрос. Код к вычислению
дамп переменно $myVar после eval
|
| Автор: Sanchezzz 15.4.2012, 11:37 |
| Fortop eval это зло и глобал тоже зло вполне есть способы написания сладкого решения... А знаете что произойдет если в массиве будет содержатся функция аля sql атака вот поэтому мой минус вам в ответ обоснованный |
| Автор: Sanchezzz 15.4.2012, 21:53 | ||||
Про эвал я вам уже написал любой уместный синтаксис PHP будет выполнятся. А если эти теги будет заполнять посетитель сайта, такой же смышленый как я?) я лично поступлю на месте пользователя как человек знающий хотя бы минимальные знания о пхп и его синтаксис убить систему сайта потому что это весело и будет уроком что так делать было нельзя .
Глобальную переменную может случайно переопределить. Получим сложно отлавливаемую ошибку. Без global улучшается читабильность кода. Также другой кодер копаясь вашем коде может не понять откуда эта переметная появилась Также глобальные переменные всегда весят в памяти когда нежели локальные освобождаются (люблю экономить каждый байт так легче на душе ) Также я очень много работал с сайтами написанных времен PHP4 и когда global у программистах был как икона всюду и везде использовался. Лично мое мнение код содержащий global,eval столь ужасен что можно приравнять govnoкоду. |
| Автор: Aliance 16.4.2012, 09:49 |
| DioNiR, поиск в гугле по словам "жадность квантификатора" должна решить проблему с регулярными выражениями. |