Найдите и замените все между ним

У меня есть файл шаблона, который использует структуру [FIRSTNAME] [LASTNAME]

и т. д. и т. д., и я буду выполнять поиск и замену на нем. Одна вещь, которую я хотел бы сделать, это то, что когда шаблон будет отправлен обратно, если я не указал, [FIRSTNAME] …. он все еще отображается в шаблоне … Я хотел бы сделать его NULL, ЕСЛИ я раю Для данных переменных не было данных.

в моем коде я использую FILE_GET_CONTENTS

$q = file_get_contents($filename); foreach ($this->dataArray as $key => $value) { $q = str_replace('['.$key.']', $value, $q); } return $q; 

Поэтому, когда этот цикл заполняется надлежащими данными, мне нужно выполнить другой поиск и заменить любые оставшиеся переменные, [FIRSTNAME]

Надеюсь, это имеет смысл, если кто-то может направить меня в правильном направлении.

ура

Похоже, вы просто хотите добавить строку, например:

 $q = preg_replace('/\[[^\]]*\]/', '' , $q); 

После всех ваших подстановок, чтобы устранить любые оставшиеся квадратные скобки.

Если вы хотите быть краткими, вы можете заменить всю функцию вариацией «движка шаблонов одной строки» по адресу http://www.webmasterworld.com/php/3444822.htm с квадратными скобками вместо завитушек.

Вы можете передать массивы в функцию str_replace в качестве аргументов.

 $keys = array( 'FIRSTNAME', 'LASTNAME' ): $replacements = array( 'George', 'Smith' ); str_replace($keys, $replacements, $input); 

И если вы хотите удалить первое имя, если оно пустое, почему бы вам просто не добавить его к массиву key => с значением '' ?

 $this->dataArray['FIRSTNAME'] = ''; 

или что-то вроде

 if (!isset($this->dataArray['FIRSTNAME'])) { $this->dataArray['FIRSTNAME'] = ''; }