PHP, как сделать, если str_replace? - PullRequest
6 голосов
/ 05 июня 2011

$str - это некоторое значение в foreach.

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

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

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

Ответы [ 3 ]

23 голосов
/ 05 июня 2011

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

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

    if ($count > 0) {
        echo $str;
    }
}
6 голосов
/ 05 июня 2011

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

<?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 для строки, которой нечего заменить, она не найдет ничего для замены и просто будет двигаться дальше без каких-либо замен или изменений.

Удачи.

2 голосов
/ 23 февраля 2017

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

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

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

...