|
|
|
| весь вечер вчера ломал голову пытался составить для следующего:
есть файл шаблона, в нем есть как бы текстовые шаблоны, выглядят так: {T_MAIN_CONTENT}....... значит нужно следующее: чтоб сначала вырезало MAIN_CONTENT а потом заменял {T_MAIN_CONTENT} на необходимую строку.......
нписал что-то подобное этому:
но не получилось: дело в том что в файле таких шаблончиков несколько, вот функция мне и вырезала с места где в первый раз встречаеться {T_ и по то место где в последний раз встречается }...... как исправить? | |
|
|
|
|
|
|
|
для: localGhost
(05.04.2005 в 03:34)
| | Хм... а вы используйте не T_, а всю строку "/\{T_MAIN_CONTENT\}/i", она же у вас не меняется:
<?php
$text = "есть файл шаблона, в нем есть как бы текстовые шаблоны, выглядят так: {T_MAIN_CONTENT}....... значит нужно следующее: чтоб сначала вырезало MAIN_CONTENT а потом заменял {T_MAIN_CONTENT} на необходимую строку.......нписал что-то подобное этому:";
$pattern = "/\{T_MAIN_CONTENT\}/i";
$replacement = "<b>HELLO</b>";
echo preg_replace($pattern, $replacement, $text);
?>
|
Конструкции .* лучше вообще избегать - с помощью её очень сложно, что либо толковое сделать. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2005 в 11:02)
| | >Хм... а вы используйте не T_, а всю строку
>"/{T_MAIN_CONTENT}/i", она же у вас не меняется:
я не уточнил...... с этим понятно все.... но дело в том что в строке {T_ ....... } может быть разное содержимое (например {T_LEFT_BLOCK}) так вот надо определить что именно указанно, и выполнить соответствующие операции по замене строки....... хотя тут можно это дело хитро обыграть........
ладно, а как тогда вытащить строчку между {T_ и }? | |
|
|
|
|
|
|
|
для: localGhost
(06.04.2005 в 03:31)
| | Я понял, здесь вам скорее понадобится замена при помощи функции обратного вызова, где вы сможете опеределить логику замены, вот скрипт-заготовка с нужным вам регулярным выражением
<?php
// функция обратного вызова
// В ней определяется логика замены
function const_replace($matches)
{
// как обычно: $matches[0] - полное вхождение шаблона
// $matches[1] - вхождение первой подмаски,
// заключенной в круглые скобки, и так далее...
if($matches[1] == "MAIN_CONTENT") return "<b>HELLO</b>";
if($matches[1] == "TITLE") return "<b>TITLE</b>";
}
// Производим замену
echo preg_replace_callback(
"|\{T_([^\}]+)\}|",
"const_replace",
$text);
?>
|
| |
|
|
|
|
|
|
|
для: localGhost
(06.04.2005 в 03:31)
| | Вот это должно помочь. Писал навскидку - могут быть неточности, но, думаю, смысл, понятен...
<?php
$text="текст .... {T_FIRST} ненужное что-нибудь {DO_NOT_TAKE_THIS} еще текст.... {T_SECOND}";
$patern="/\{T_([^\}]*\}/";
preg_match_all ($patern, $text, $matches);
var_dump($matches);
?>
|
| |
|
|
|