#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);
}
У меня отлично работает.
Надеюсь, это пригодится кому-то еще.