如何使用PHP删除字符串中的最后一个单词?
例如,字符串"Hi, I'm Gian Marco"
将变为"Hi, I'm Gian"
。
答案 0 :(得分:20)
试试这个:
$txt = "Hi, I'm Gian Marco";
$str= preg_replace('/\W\w+\s*(\W*)$/', '$1', $txt);
echo $str
out put
Hi, I'm Gian
答案 1 :(得分:7)
您可以使用正则表达式执行此操作。 (见 Ahmed Ziani的答案。)
但是,在PHP中,您也可以使用一些内置函数来完成它。见下面的代码
$text = "Hi, I'm Gian Marco";
$last_space_position = strrpos($text, ' ');
$text = substr($text, 0, $last_space_position);
echo $text;
答案 2 :(得分:6)
检查这个
<?php
$str ='"Hi, I\'m Gian Marco" will be "Hi, I\'m Gian"';
$words = explode( " ", $str );
array_splice( $words, -1 );
echo implode( " ", $words );
?>
答案 3 :(得分:3)
如果你不知道最后一个字并且字符串长度很短,那么当前的解决方案是可以的。
如果你知道它,例如在为这样的查询循环连接字符串时:
foreach ($this->id as $key => $id) {
$sql.=' id =' . $id . ' OR ';
}
更好的解决方案:
$sql_chain = chop($sql_chain," OR ");
请注意,带有正则表达式的preg_replace对于长字符串是非常慢。 在这种情况下,印章快100倍,而且增益可能很大。
答案 4 :(得分:0)
此代码可以帮助您:
$str="Hi, I'm Gian Marco";
$split=explode("",$str);
$split_rem=array_pop($split);
foreach ($split as $k=>$v)
{
echo $v.'';
}
答案 5 :(得分:0)
当字符串包含特殊字符时,常规表达式可能会导致问题。为什么不简单地这样做:
$input = "Hi, I'm Gian Marco";
$output = substr($input, 0, strrpos($input, " "));
echo $output;
答案 6 :(得分:0)
将带有str
的{{1}}分解成数组explode(delimiter, string)
,取第一个单词放入$words
中,并遍历单词{{的计数1}} 次 减一,即排除最后一个词。
$res
答案 7 :(得分:0)
在寻找 ltrim 和 rtrim 替代方案(修剪整个第一个/最后一个词)时,我遇到了这样的帖子。只是想分享我在其他人像我一样登陆时编写的功能。
找到给定单词的第一次出现,如果是第一个单词,则返回没有第一个单词的句子。
function leftStrTrim($sentence, $word){
$wordLength = strlen($word);
$wordStart = strpos($sentence, $word);
if($wordStart!==false && $wordStart==0){
return substr($sentence, $wordLength);
}
return $sentence;
}
查找给定单词的最后一次出现,如果是最后一个单词,则返回没有该最后一个单词的句子。
function righStrTrim($sentence, $word){
$wordLength = strlen($word);
$wordStart = strrpos($sentence, $word);
if($wordStart!==false && $wordStart == strlen($sentence)-$wordLength){
return substr($sentence, 0, $wordLength*-1);
}
return $sentence;
}