2013-03-09 2 views
1

Что-то вроде этого:Как заменить текст в файле на str_replace?

$vars = array("key" => "value", "key2" => "value2" //..etc); 

function ($template, $vars) { 
    $file = file_get_contents($template); 
    foreach ($vars as $key => $value) { 
    str_replace($template //this is where I get confused); 

    } 
} 

Идея заключается в том, чтобы получить содержимое файла шаблона (включает в себя только HTML), то Еогеасп будет работать и заменить текст, который является «ключом» внутри массива ПОСРЕДНИКОВ, с текстом, который является полем «значение» внутри массива vars. Так что скажем, что у меня есть где-то в тексте файла шаблона, подобном этому "{content}". Функция должна найти эту строку (включая фигурные скобки, которых я знаю, я не указал их в моем примере) и заменить ее соответствующим значением внутри массива.

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

str_replace($replacethese, $withthese, $inthisfile); 

достаточно простой, но как я могу это сделать, когда мой массив двумерный? Моим аргументом «$ replacethese» должны быть «ключевые» значения массива $ vars.

ответ

2

вы можете использовать array_keys() и array_values(), чтобы получить ключи и значения $vars. Попробуйте это:

$replace = array_keys($vars); 
$with = array_values($vars); 
$file = str_replace($replace, $with, $file); 

EDIT:

@E L говорит, что strtr() лучше :). Таким образом, вы можете попробовать:

$file = strtr($file, $vars); 
+2

'strtr()' намного лучше =) –

1

Вам не нужно Еогеасп цикл только один вызов str_replace, как это будет делать работу:

str_replace(array_keys($vars), array_values($vars), $fileData); 
0
<?php 
function ($template, $vars) { 
    $data = file_get_contents($template); 
    $data = str_replace(array_keys($vars), array_values($vars), $data); 
    file_put_contents($template, $data); 
} 
Смежные вопросы