I have tried a few things to get a last part out I done this:
$string = \'Sim-only 500 | Internet 2500\';
preg_replace(\"Sim-Only ^([1-9]|[1-9][0-9]|[1-9][0-
This should work for you:
$str = "fetch the last word from me";
$last_word_start = strrpos ( $str , " ") + 1;
$last_word_end = strlen($str) - 1;
$last_word = substr($str, $last_word_start, $last_word_end);
If you want to wrap the last word with a span:
<?php
/**
* Wrap last word with span
* @author: Elron
* https://stackoverflow.com/questions/18612872/get-the-last-word-of-a-string
*/
function wrap_last_word($string) {
// Breaks string to pieces
$pieces = explode(" ", $string);
// Modifies the last word
$pieces[count($pieces)-1] = '<span class="is-last-word">' . $pieces[count($pieces)-1] . '</span>';
// Returns the glued pieces
return implode(" ", $pieces);
}
wrap_last_word('hello this is wrapped');
// returns this:
// hello this is <span class="is-last-word">wrapped</span>
It depends on what you try to do (it is hard to understand from your description) but to get the last word from a string you can do:
$split = explode(" ", $string);
echo $split[count($split)-1];
See How to obtain the last word of a string for more information.
If you're after the last word in a sentence, why not just do something like this?
$string = 'Sim-only 500 | Internet 2500';
$pieces = explode(' ', $string);
$last_word = array_pop($pieces);
echo $last_word;
I wouldn't recommend using regular expressions as it's unnecessary, unless you really want to for some reason.
$string = 'Retrieving the last word of a string using PHP.';
preg_match('/[^ ]*$/', $string, $results);
$last_word = $results[0]; // $last_word = PHP.
Using a substr()
method would be better than both of these if resources/efficiency/overhead is a concern.
$string = 'Retrieving the last word of a string using PHP.';
$last_word_start = strrpos($string, ' ') + 1; // +1 so we don't include the space in our result
$last_word = substr($string, $last_word_start); // $last_word = PHP.
it is faster, although it really doesn't make that much of a difference on things like this. If you're constantly needing to know the last word on a 100,000 word string, you should probably be going about it in a different way.
The existing solutions all work fine, but I wanted a one-liner. explode()
will split a sentence into words, but trying to pass it directly into array_pop()
or end()
gives a "Only variables should be passed by reference" notice. array_slice() to the rescue:
$string = 'Sim-only 500 | Internet 2500';
echo array_slice(explode(' ', $string), -1)[0];
Here is another way to get the last word from a string
$my_string = "fetch the last word from me";
// Explode the string into an array
$my_string = explode(" ", $my_string);
// target the last word with end() function
$my_string = end($my_string);
echo $my_string;
Result me