2016-09-08 7 views
2

Я пытаюсь заменить строку в переменной, которая получила содержимое через file_get_contents().Замена строки файлом_get_contents()

$link_yes = "someText"; 
$link_no = "someText"; 
ob_start(); 
$mail_content = file_get_contents($_SERVER['DOCUMENT_ROOT']. $user_file . $mail_file); 
$link1 = array("###Text to replace###"); 
$link2 = array("###Text to replace###"); 
str_replace($link1, $link_yes, $mail_content); 
str_replace($link2, $link_no, $mail_content); 
$mail -> Body = $mail_content; 
ob_end_clean(); 

Я пробовал это без $ link1 и $ link2. Поэтому я вставил строку непосредственно в функцию replace.

Но это тоже не сработало.

Может кто-нибудь мне помочь?

Спасибо!

+1

Удалить 'array' с' $ link1' и '$ link2' , – Virb

+0

@Virb Это не проблема – RiggsFolly

ответ

2

str_replace() возвращает измененную строку, и вы не фиксируете полученное исправленное значение.

Кроме того, если у вас есть более чем одну вещь, чтобы заменить вам не придется использовать массив, хотя это не было бы ошибкой

$link_yes = "someText"; 
$link_no = "someText"; 

ob_start(); 
$mail_content = file_get_contents($_SERVER['DOCUMENT_ROOT']. $user_file . $mail_file); 

$link1 = "###Text to replace###"; 
$link2 = "###Text to replace###"; 

$mail_content = str_replace($link1, $link_yes, $mail_content); 
$mail_content = str_replace($link2, $link_no, $mail_content); 


$mail -> Body = $mail_content; 

ob_end_clean(); 
+1

Отличный ответ, полезно знать разницу между функциями, которые изменяют переменную, и теми, которые этого не делают. Это называется «Передача по ссылке» http://php.net/manual/en/language.references.pass.php. При изучении документации вы можете определить, какие функции поддерживают это, ища символ ampersand & перед аргументом функции. Лучшее понимание перехода по ссылке неоценимо для начинающих разработчиков PHP! –

+0

Ничего себе, что noob-fail ^^ .. Прошу прощения .. но спасибо за ваш быстрый ответ! – Florianb

+0

@Florianb Не паникуйте, я делаю это все время, и вы, вероятно, сделаете это снова. Просто сейчас, надеюсь, как и я, это будет первое, что происходит с вами, когда это произойдет снова. – RiggsFolly