2009-12-30 8 views
0

Я пытаюсь изменить часть PHP скрипта структурированном как этот Barebone напримерСамого модифицирования PHP скрипт

<-- part A --> 
function modify_B($string) 
{ 
    some code to modify part B 
} 
<-- end A --> 

<-- part B --> 
<container>some XML</container> 
<-- end B --> 

<-- part C --> 
<-- end C --> 

Я хотел бы изменить часть B без изменения остальной части файла, так как А и B - логика сценария, которая не должна меняться.

Может ли кто-нибудь мне помочь? Заранее благодарю вас за помощь.

+1

На первый взгляд это звучит как Bad Idea ™. Можете ли вы уточнить, чего вы хотите достичь, в конце концов, что вам нужно для изменения XML? Вероятно, есть лучшее решение для того, что вы хотите сделать, чем самомодифицирующиеся скрипты. – deceze

+0

Почему вы не можете разделять B отдельно в отдельном файле? – Lukman

+0

Возможно, есть лучшие способы достижения этой задачи. Я намерен реализовать крошечный веб-сайт, который находится в ОДНОМ файле. Поэтому нужно использовать один файл, не более одного! Содержимое является динамическим: на самом деле часть A является php-скриптом, который ведет себя как рудиментарный редактор содержимого. – Antonio

ответ

1

Похоже, из вашего примера это всего лишь некоторые строковые данные XML. Поэтому загрузите содержимое в строку каким-либо образом (либо установите переменную со стандартной строковой нотацией, либо прочитайте ее из содержимого отдельного файла), измените строку в соответствии с вашими прихотями и затем эхо-строку выведите на выход. Тогда это уже не проблема самореализации. Это просто вопрос управления данными.

0

Вы имеете в виду, что XML находится вне вашего PHP-кода <? ?>? Итак, вы хотите изменить текст, который будет выводиться с помощью PHP-скрипта?

Если это так, помните, что все, что находится за пределами тегов скрипта, просто рассматривается как строка, которая выводит PHP так, как если бы вы написали echo $string;. Поэтому просто сохраните измененные данные в строковой переменной и повторите ее.

0

Если вам нужно настойчивость в изменениях, поместите «B» в файл и включите или прочитайте его.

0

Вы никогда не должны писать самомодифицирующийся код (если вы не пишете сборку), это может вызвать всевозможные проблемы, рассмотрим, например, что произойдет, если есть ошибка, которая уничтожает код в файле.

Разделить данные из кода и загрузить его с помощью команды require_once

Вы можете использовать стандартное чтение файла и запись команд для редактирования данных http://www.php.net/manual/en/book.filesystem.php

... или еще лучше, поскольку данные это XML, сохранить файл в виде XML-файла и использовать простой xml для хранения данных. http://php.net/manual/en/book.simplexml.php

+0

Я вижу из комментариев, что вы хотите использовать один файл для своего веб-сайта, и вы можете сделать это, это будет намного сложнее, и для этого вам нужно будет сделать честную кодировку, но все, что вы действительно делая это, читайте весь файл в var и манипулируйте им, прежде чем записывать его обратно. Какой бы метод вы ни выбрали, вы будете идти против практики баста. РЕДАКТИРОВАТЬ: Ой, не значит, чтобы вопрос о некрополе !!! – Sqoo

+0

Ну, у меня есть, возможно, не самомодифицирующийся, а сам создающий код для динамического, если я тогда просто исполняю (очевидно, что поколение находится под огромной нагрузкой ifs, поэтому ничего неожиданного в этом нет.например, у вас есть список диапазонов дат и дат, и вы хотите проверить, подходит ли дата в нем, это будет трудно, не зная списка до того, как время выполнения будет сложным, если единственное, что вы знаете, это то, что у вас есть запятая, отсортированный список дат и ярости. Я просто определяю «одиночный или диапазон» и записываю оператор условия и конкатцируем его через OR. – My1

 Смежные вопросы

  • Нет связанных вопросов^_^