$string = "Hello World Again". echo strrchr($string , ' '); // Gets ' Again'
Теперь я хочу получить «Hello World» из $string
[Подстрока перед последним вхождением пробела '']. Как это получить?
Это своего рода дешевый способ сделать это, но вы можете разделить, поп, а затем присоединиться, чтобы сделать это:
$string = 'Hello World Again'; $string = explode(' ', $string); array_pop($string); $string = implode(' ', $string);
$string = "Hello World Again"; echo substr($string, 0, strrpos( $string, ' ') ); //Hello World
Если символ не найден, ничего не отражается
Один (хороший и охлажденный) способ:
$string = "Hello World Again"; $t1=explode(' ',$string); array_pop($t1); $t2=implode(' ',$t1); print_r($t2);
Другие (более сложные) способы:
$result = preg_replace('~\s+\S+$~', '', $string);
или
$result = implode(" ", array_slice(str_word_count($string, 1), 0, -1));
strripos – Найти позицию последнего вхождения подстроки без учета регистра в строке
$string = "hello world again"; echo substr($string, 0, strripos($string, ' ')); // Hello world
$myString = "Hello World Again"; echo substr($myString, 0, strrpos($myString, " "));
Правильная реализация должна быть:
$string = "Hello World Again"; $pos = strrpos( $string, ' '); if ($pos !== false) { echo substr($string, 0, $pos ); //Hello World }
В противном случае, если символ не найден, он ничего не распечатает. См. Следующий случай:
$string = "Hello World Again"; //prints nothing as : is not found and strrpos returns false. echo substr($string, 0, strrpos( $string, ':') );
Вы можете использовать комбинацию strrpos , которая получает позицию последнего экземпляра заданной строки внутри строки и substr, чтобы вернуть значение.
Вы можете просто использовать:
$string = "Hello World Again"; echo preg_replace('# [^ ]*$', '', $string);
Это будет работать независимо от того, встречается ли символ в строке или нет. Он также будет работать, если последний символ – это пробел.
function cutTo($string, $symbol) { return substr($string, 0, strpos($string, $symbol)); }