0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
1 | |
Нужно разбить строку по условию <?.?>, <?php ?>22.12.2012, 22:37. Показов 2613. Ответов 16
Метки нет (Все метки)
Доброго времени суток! Нужна помощь.
К примеру, есть запись в бд вида: текст текст текст текст текст текст текст текст <?php ... ?> текст текст текст текст <? ... ?> текст текст текст текст текст текст текст текст текст текст текст <?php ... ?>. Нужно разбить этот текст в массив вида: [0] => текст текст текст текст текст текст текст текст, [1] => <?php ... ?>, [2] => текст текст текст текст, [3] => <? ... ?>, [4] => текст текст текст текст текст текст текст текст текст текст текст, [5] => <?php ... ?> Как можно такое реализовать?
0
|
22.12.2012, 22:37 | |
Ответы с готовыми решениями:
16
Разбить поле и создать новую строку по условию Нужно разбить строку Нужно разбить строку на числа Как разбить строку на слова по некоторому символу, php? |
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
|
23.12.2012, 00:03 | 2 |
зачем это нужно? опиши подробно задачу, возможно этого и не требуется.
0
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
23.12.2012, 00:38 [ТС] | 3 |
Есть задача -- хранение всех страниц сайта в отдельной таблице в бд. Необходимо, чтобы помимо html кода в базе мог храниться и php код в любом количестве как строк, так и конструкций типа <? .. ?>, <?php ... ?>. Вытащить такую запись из БД не составляет труда, однако проблема в том, чтобы полученный текст отображался как текст, а конструкции php обрабатывались как php-код.
Я пришел к выводу разбить всю строку на подстроки, и искать в начале "<?". Если находим, то используем функцию eval, если не находим, то echo.
0
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
23.12.2012, 00:56 | 4 |
0
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
23.12.2012, 01:06 [ТС] | 5 |
php код не является данными, но что может мешать мне хранить его в базе данных? Мне нужно чтобы код интерпретировался, и мне кажется, что этого можно достичь. Подскажите решение лучше, если знаете. Убрать код из данных на данный момент не решение
0
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
23.12.2012, 01:11 | 6 |
Структура данных везде одинакова, т.е. всегда в 1,3,5 элементе массива будет код php? Если нет, то нужно двумя регулярками прогонять, да и решение какое-то "кривое" получиться )))
0
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
23.12.2012, 01:15 [ТС] | 7 |
Нет, php конструкций может быть сколько угодно и располагаться они могут как угодно. Т. е. могут располагаться даже одна за одной, а могут совсем отсутствовать.
0
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
23.12.2012, 01:19 | 8 |
Вот, блин ))) Тогда получается нужно разбивать регуляркой, а потом ещё каждый элемент проверять на наличие в нём PHP кода, чтобы применить к нему eval().
0
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
23.12.2012, 01:19 [ТС] | 9 |
Да я думал про две регулярки и два массива, но мне показалось, что решение реально "кривое") Неужели нет функции в php которая бы разбивала строку по регулярному выражению, при этом оставляя результат регулярного выражения так же в массиве?
0
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
23.12.2012, 01:24 | 10 |
Даже решение с двумя регулярками не поможет (это я поспешил), поскольку Вы то получите отдельно текст, отдельно код, но не будете знать, что за чем идёт
0
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
23.12.2012, 01:28 | 11 |
здравый смысл.
Уже. Вынести код туда, где ему место. В зависимости от кода.
0
|
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
|
|
23.12.2012, 01:30 | 12 |
А в тексте html теги есть?
1
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
|
23.12.2012, 01:57 [ТС] | 13 |
Чтож, вариант хранить все страницы в отдельных файлах (которые лежат в отдельных каталогах), и создавать таблицу соответствий в бд, с заголовками, мета данными и символьными кодами, как это делает битрикс. Однако, это создает неудобное нагромождение. И хочется чего-то поудобнее.
Нечто подобное тому, чего я хочу, реализует modx. Однако там вызов кода реализуется с помощью специальных конструкций вида {{}}, и с помощью этих конструкций тянуться php файлы. Я же хочу перенести всю работу страниц сайта в базу данных, только с тем условием, что можно спокойно писать в этих кодах как html код, так и php. Добавлено через 18 минут И все же, господа, неужели нет способа разбить такую строку в нужный мне массив?
0
|
Почетный модератор
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||||
23.12.2012, 02:19 | 14 | |||||
Добавлено через 1 минуту для html надо писать отдельный парсер
1
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
||||||
23.12.2012, 06:20 [ТС] | 15 | |||||
в общем в итоге получилось как то так:
0
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
|
23.12.2012, 10:54 | 16 |
ну у вас явно ужасающая архитектура
хранить в БД нужно данные, а не php код нет никаких причин хранить php код в теле "страниц", т.е. шаблонах да и шаблоны в БД хранит нет смысла я бы вот что сделал - я бы кэшировал как файлы ваши данные из таблиц и с помощью буферизации вывода генерировал бы страницы и через include подключал. но, повторюсь - ваша архитектура - гумно, уходите от неё.
1
|
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 12
|
||||||
23.12.2012, 20:11 [ТС] | 17 | |||||
Спасибо, я подумаю. Задумка вот в чем у меня:
Существуют некие классы, выводящие на веб-страницу определенные элементы (к примеру форму авторизации, если пользователь не авторизован, блок новостей, и т. д.) метод класса вызывается одной строчкой кода, вида
Сейчас я думаю, что если ввести некий синтаксис отвечающий за вывод таких элементов (к примеру возьмем конструкцию вида {= =}, в которой будем передавать определенные настройки, а при отображении страницы заменять эти конструкции реальным кодом с заданными настройками. Такой вариан смотрится лучше, или тоже не годится?
0
|
23.12.2012, 20:11 | |
23.12.2012, 20:11 | |
Помогаю со студенческими работами здесь
17
Нужно разбить строку с арифметическим выражением на маленькие блоки Нужно сдвинуть строку в таблице по условию нужно разбить строку на массив, ошибка: assignment to expression with array type o=0; нужно разбить исходную строку на две подстроки , причём первая длинной k Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |