Заменить только в конце строки - PullRequest
6 голосов
/ 06 января 2012

echo $string может дать любой текст.

Как удалить слово "blank", , только если оно является последним словом из $string?

Итак, если у нас есть предложение типа "Steve Blank is here" - ничего не следует удалять, в противном случае, если предложение "his name is Granblank", тогда слово "Blank" должно быть удалено.

Ответы [ 4 ]

16 голосов
/ 06 января 2012

Вы можете легко сделать это с помощью регулярных выражений. \b обеспечивает удаление только в том случае, если это отдельное слово.

$str = preg_replace('/\bblank$/', '', $str);
4 голосов
/ 06 января 2012

Как вариант ответа Тиса:

/**
 * A slightly more readable, non-regex solution.
 */
function remove_if_trailing($haystack, $needle)
{
    // The length of the needle as a negative number is where it would appear in the haystack
    $needle_position = strlen($needle) * -1;  

    // If the last N letters match $needle
    if (substr($haystack, $needle_position) == $needle) {
         // Then remove the last N letters from the string
         $haystack = substr($haystack, 0, $needle_position);
    }

    return $haystack;
}

echo remove_if_trailing("Steve Blank is here", 'blank');   // OUTPUTS: Steve blank is here
echo remove_if_trailing("his name is Granblank", 'blank');  // OUTPUTS: his name is Gran
1 голос
/ 06 января 2012

Попробуйте следующий код:

$str = trim($str);
$strlength = strlen($str);

if (strcasecmp(substr($str, ($strlength-5), $strlength), 'blank') == 0)
    echo $str = substr($str, 0, ($strlength-5))

Не используйте preg_match, если это не требуется. Сам PHP рекомендует использовать строковые функции над функциями регулярных выражений, когда сопоставление является простым. Со страницы preg_matc h.

0 голосов
/ 06 января 2012

ThiefMaster вполне корректен. Техника, в которой не используется символ конца строки $, состоит в использовании rtrim .

$trimmed = rtrim($str, "blank");
var_dump($trimmed);

^ Это если вы хотите удалить последние символы строки. Если вы хотите удалить последнее слово:

$trimmed = rtrim($str, "\sblank");
var_dump($trimmed);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...