我已经尝试了一些事情来获得最后一部分 我这样做了:
$string = 'Sim-only 500 | Internet 2500';
preg_replace("Sim-Only ^([1-9]|[1-9][0-9]|[1-9][0-9][0-9][0-9])$ | Internet ","",$string
AND
preg_match("/[^ ]*$/","",{abo_type[1]})
第一个不起作用,第二个返回一个数组但是需要一个字符串。
答案 0 :(得分:41)
如果你在句子的最后一个单词之后,为什么不做这样的事情?
$string = 'Sim-only 500 | Internet 2500';
$pieces = explode(' ', $string);
$last_word = array_pop($pieces);
echo $last_word;
我不建议使用正则表达式,因为它是不必要的,除非你真的想要出于某种原因。
$string = 'Retrieving the last word of a string using PHP.';
preg_match('/[^ ]*$/', $string, $results);
$last_word = $results[0]; // $last_word = PHP.
他们提供的substr()
方法可能会更好
$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.
它更快,虽然它确实没有在这样的事情上产生那么大的差别。如果你经常需要知道100,000字符串的最后一个字,你可能应该以不同的方式处理它。
答案 1 :(得分:8)
这应该适合你:
$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);
答案 2 :(得分:4)
这取决于你尝试做什么(从你的描述中很难理解)但是你可以从字符串中得到最后一个字:
$split = explode(" ", $string);
echo $split[count($split)-1];
有关详细信息,请参阅How to obtain the last word of a string。
答案 3 :(得分:1)
你去一个通用函数来从字符串
获取最后一个单词public function get_last_words($amount, $string)
{
$amount+=1;
$string_array = explode(' ', $string);
$totalwords= str_word_count($string, 1, 'àáãç3');
if($totalwords > $amount){
$words= implode(' ',array_slice($string_array, count($string_array) - $amount));
}else{
$words= implode(' ',array_slice($string_array, count($string_array) - $totalwords));
}
return $words;
}
$string = 'Sim-only 500 | Internet 2500';
echo get_last_words(1, $string );
答案 4 :(得分:1)
如果您想用空格将最后一个单词换行:
<?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>
答案 5 :(得分:0)
这是从字符串中获取最后一个单词的另一种方法
$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;
结果me
答案 6 :(得分:0)
现有的解决方案都可以正常工作,但是我想要一个衬套。 explode()
会将一个句子拆分成多个单词,但是尝试将其直接传递到array_pop()
或end()
中会发出“仅变量应通过引用传递”的通知。 array_slice()
进行营救:
$string = 'Sim-only 500 | Internet 2500';
echo array_slice(explode(' ', $string), -1)[0];
答案 7 :(得分:0)
使用正则表达式的单行解决方案:
preg_replace('/.*\s/', '', $string);
这会抑制以空格结尾的所有内容,并且由于 regexp 总是“尽可能长”匹配,这将匹配除最后一个单词之外的所有内容。 这也有利于处理任何“空格”字符(制表符、换行符...)。
但最好的性能/资源消耗解决方案是:
substr($string, strrpos($string, ' ') + 1);