php как создать if str_replace?

#php #str-replace

#php #str-replace

Вопрос:

$str есть некоторое значение в foreach.

 $str = str_replace('_name_','_title_',$str);
  

как сделать if str_replace ?

Я хочу сделать то же самое, if have a str_replace затем выполнить echo $str , иначе нет, перейти к текущему foreach, а затем к следующему. Спасибо.

Ответ №1:

Существует четвертый параметр для str_replace() , который устанавливается на количество выполненных замен. Если ничего не было заменено, оно устанавливается в 0. Поместите туда ссылочную переменную, а затем проверьте ее в своем операторе if:

 foreach ($str_array as $str) {
    $str = str_replace('_name_', '_title_', $str, $count);

    if ($count > 0) {
        echo $str;
    }
}
  

Ответ №2:

Если вам нужно проверить, найдена ли строка внутри другой строки, вам может понравиться это.

 <?php
if(strpos('_name_', $str) === false) {
    //String '_name_' is not found
    //Do nothing, or you could change this to do something
} else {
    //String '_name_' found
    //Replacing it with string '_title_'
    $str = str_replace('_name_','_title_',$str);
}
?>
  

http://php.net/manual/en/function.strpos.php

Однако в этом примере вам не должно быть необходимости. Если вы запустите str_replace строку, которую нечего заменить, она не найдет ничего для замены и просто продолжит без каких-либо замен или изменений.

Удачи.

Комментарии:

1. strpos должен сначала получить стог сена. Это правильно: (strpos($str, ‘ name ‘) === false)

Ответ №3:

Я знаю, что это старый вопрос, но он дает мне руководство для решения моей собственной проблемы с проверкой, поэтому мое решение было:

 $contn = "<p>String</p><p></p>";
$contn = str_replace("<p></p>","",$contn,$value);
if ($value==0) {
$contn = nl2br($contn);
}
  

У меня отлично работает.
Надеюсь, это пригодится кому-то еще.