Найдите [] и замените все между - PullRequest
1 голос
/ 25 июня 2011

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

и т. Д. И т. Д. .... и я буду искать и заменять его. Одна вещь, которую я хотел бы сделать, это то, что когда шаблон get возвращается, если я не указал, [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]

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

Приветствия

Ответы [ 2 ]

3 голосов
/ 25 июня 2011

Звучит так, будто вы просто хотите добавить строку вроде:

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

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

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

2 голосов
/ 25 июня 2011

Вы можете фактически передавать массивы в функцию 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'] = '';
}
...