|
|
|
| В данном куске скрипта происходит вставка текста перед тегом </body>. Если тег найден и произошла замена скрипт срабатывает, но если тега нет, то все равно пишет "successfully completed" Подскажите пожалста, как правильно обозначить условие, чтоб при не срабатывании замены, выводилось else
if (false !== ($replace = str_replace('</body>', $links.</body>', $str))) {
$newfile = fopen($file,"w+");
fwrite($newfile, $replace);
fclose($newfile);
echo "successfully completed - <b>$file</b><br>";
}else{
echo "<b>error opening file</b> - $file<br>";
}
|
| |
|
|
|
|
|
|
|
для: julpierto
(26.06.2011 в 15:18)
| | Вряд ли это условие когда либо не сработает, дело в том что str_replace() возвращает строку не зависимо от того, была в ней произведена замена или нет. Лучше воспользоваться четвертым параметром функции str_replace(), через который возвращается количество фактически произведенных замен. | |
|
|
|
|
|
|
|
для: cheops
(26.06.2011 в 18:03)
| | Спасибо!! Игорь Вячеславович / cheops, не знаю как вас и благодарить и как вы находите только время, чтобы учить нас "неразумных". Форум softtime никогда не оставлял без ответа или рекомендации для решения вопросов:)
Думаю, я понял вас правильно, но с точки зрения синтаксиса, что можете сказать, верно ли?
if (1 == ($replace = str_replace('</body>', $links.'</body>', $str, 1))) {
$newfile = fopen($file,"w+");
fwrite($newfile, $replace);
fclose($newfile);
echo "successfully completed - <b>$file</b><br>";
}else{
echo "<b>error opening file</b> - $file<br>";
}
|
| |
|
|
|
|
|
|
|
для: julpierto
(26.06.2011 в 18:48)
| | Не совсем так, дело в том, что функция возвращает значение по ссылке, т.е. не имеет значения что в переменной четвертого параметра до вызова, это значение устанавливается только после того, как функция отработала. Однако скалярное значение не подходит - в него нельзя сохранить новое значение, поэтому там должна быть обязательно переменная
$count = 0;
$replace = str_replace('</body>', $links.'</body>', $str, $count);
if($count){
...
}
|
PS Спасибо, за добрый отзыв :) | |
|
|
|
|
|
|
|
для: cheops
(26.06.2011 в 19:02)
| | Изящное решение, спасибо еще раз!!
Немного видоизменил условие и все работает, кроме того узнал новый прием из вашего примера:)
$const = 1;
$replace = str_replace('</body>', $links.'</body>', $str, $count);
if ($count == $const){
$newfile = fopen($file,"w+");
fwrite($newfile, $replace);
fclose($newfile);
echo "successfully completed - <b>$file</b><br>";
}else{
echo "<b>error opening file</b> - $file<br>";
}
|
PS Как говорится "На войне патронами отдам!", а пока все что могу - это добрые слова в ваш адрес и всех кто трудится на этом форуме и помогает ему!) | |
|
|
|