2013-04-01 2 views
-1

Я пытаюсь сделать классную функцию php для замены материала, но я получаю ошибку синтаксического анализа по непонятной причине. Я что-то упускаю ?ошибка php parse, значения str_replace в массиве

error_reporting(E_ALL); 

$array_pairs = array('{{simple}}' => 'simple_value', '{{organization}}' => 'Apple Inc'); 


function the_replace($aray_pairs, $content){ 
foreach($aray_pairs as $a => $b) 
{ 
$content = str_replace($a, $b, $content); 

return $content; 
} 


$invoice = '{{organization}} is a {{simple}}'; 

$invoice = replace_values($array_pairs, $invoice); 
echo $invoice; 
+0

Почему сделать петлю? '$ content = str_replace (array_keys ($ pairs), array_values ​​($ pairs), $ content);' str_replace может взять массив для поиска и массив для замены. –

+0

@GigaWatt не знал этого (array_keys, array_values)! большое спасибо ! Я в основном пытался сделать себе такую ​​функцию –

ответ

1

Missing} Название функции рассогласования слишком

error_reporting(E_ALL); 

$array_pairs = array('{{simple}}' => 'simple_value', '{{organization}}' => 'Apple Inc'); 


function replace_values($aray_pairs, $content){ // function names didn't match too. 
    foreach($aray_pairs as $a => $b) 
    { 
     $content = str_replace($a, $b, $content); 

    } 
    return $content; 

} // here 

$invoice = '{{organization}} is a {{simple}}'; 

$invoice = replace_values($array_pairs, $invoice); 
echo $invoice; 
+0

спасибо, действительно, я пропустил это. Помимо этого я получаю как результат {{organization}} - это просто_значение, а не ожидаемое. Яблоко inc - это просто_значение. Любая идея, как я могу это исправить? –

+0

Я только что обновил свой код для вас. Вы использовали 'return' в своем foreach, поэтому он возвращал ваш контент на первой итерации, поэтому он не попадал в ваш второй ключ (организация) массива – Adrian

+0

Однако вы можете передавать массивы в' str_replace() ', он не должен быть строкой. – Adrian

Смежные вопросы