preg_replace("/{{(.*?)}}/e","$$1",$rcontent);
Пожалуйста, объясните о мне ... я не могу понять этоPHP preg_replace
preg_replace("/{{(.*?)}}/e","$$1",$rcontent);
Пожалуйста, объясните о мне ... я не могу понять этоPHP preg_replace
Рассмотрим пример использования:
$rcontent = "abc {{foo}} def";
$foo = 'bar';
$rcontent = preg_replace("/{{(.*?)}}/e","$$1",$rcontent);
echo $rcontent; // prints abc bar def
Я предполагаю, что вы присваиваете значение preg_match
назад до $rcontent
, иначе это не будет иметь никакого смысла.
Теперь регулярное выражение вы используете {{(.*?)}}
, который ищет что-нибудь (не greedyly) между {{
и }}
, а также запоминает найденную строку из круглых скобок.
В моем случае .*?
соответствует foo
.
Следующая деталь замены $$1
. В настоящее время $1
составляет foo
, поэтому $$1
будет $foo
, что составляет bar
. Таким образом, значение {{foo}}
будет заменено на значение $foo
, которое равно bar
.
Если $$1
просто тип и вы использовать $1
то регулярное выражение заменяет {{foo}}
с foo
.
$ file = file ("templates/index.html"); $ rcontent = join ("", $ file); $ rcontent = preg_replace ("/{{(.*?)}}/ e", "$$ 1", $ rcontent); print $ rcontent; Это мой код. Работает отлично .. но шаблоны/index.html-файл не имеют в себе никаких парантез. – sowmiya
@sowmiya: Извините, я не получил ваш вопрос. – codaddict
копировать содержимое «templates/index.html» в файл php ... Чтобы скопировать содержимое am с помощью этого регулярного выражения, у меня нет фигурных скобок в моем файле «templates/index.html». но он отлично работает. Как работает этот механизм шаблонов, я не знаю ... – sowmiya
ленивый * Повторяет предыдущий элемент ноль или более раз. Lazy, поэтому движок сначала пытается пропустить предыдущий элемент, прежде чем пытаться перестановки с все возрастающими совпадениями предыдущего элемента.
для например: .*?
соответствует "def"
в abc "def" "ghi" jkl
Почему голосовать, чтобы закрыть это? Довольно ясно, что вопрос задается вопросом, что означает регулярное выражение. – JAL
@Alex JL: Я не голосовал за закрытие, но, должно быть, это был титул. Я не знаю, какие метатеги имеют отношение к этому вопросу. – BoltClock
@BoltClock это довольно загадочно. – JAL