PHP: 如何从字符串中删除最后一个词?

PHP: How can I remove from String the last word?

如何使用 PHP 从字符串中删除最后一个单词?

例如,字符串 "Hi, I'm Gian Marco" 将变为 "Hi, I'm Gian"

试试这个:

$txt = "Hi, I'm Gian Marco";
$str= preg_replace('/\W\w+\s*(\W*)$/', '', $txt);
echo $str

输出

Hi, I'm Gian

检查这个

 <?php
$str ='"Hi, I\'m Gian Marco" will be "Hi, I\'m Gian"';
$words = explode( " ", $str );
array_splice( $words, -1 );

echo implode( " ", $words );
?>

来源:Remove last two words from a string

此代码可能对您有所帮助:

$str="Hi, I'm Gian Marco";

$split=explode("",$str);
$split_rem=array_pop($split);
foreach ($split as $k=>$v)
{
   echo $v.'';
}

如果不知道最后一个词,字符串长度较短,目前的解决方案是可以的。

以防你知道,例如当为这样的查询循环连接字符串时:

        foreach ($this->id as $key => $id) {
            $sql.=' id =' . $id . ' OR ';
        }

更好的解决方案:

        $sql_chain = chop($sql_chain," OR ");

请注意,使用正则表达式的 preg_replace 对于长字符串 非常 很慢。 在这种情况下,Chop 的速度提高了 100 倍,性能增益可能会很大。

您可以使用正则表达式来完成。 (参见 Ahmed Ziani 的回答。

但是,在 PHP 中,您也可以使用一些内置函数来完成。请参阅下面的代码

$text = "Hi, I'm Gian Marco";
$last_space_position = strrpos($text, ' ');
$text = substr($text, 0, $last_space_position);
echo $text;

当字符串包含特殊字符时,正则表达式可能会导致问题。为什么不简单地使用这个:

$input = "Hi, I'm Gian Marco";
$output = substr($input, 0, strrpos($input, " "));
echo $output;

strexplode(delimiter, string)分解成一个数组$words,取第一个词放入$res,然后遍历词 $words 减去最后一个单词的次数

$str = "Hi, I'm Gian Marco";
$words = explode(" ",$str);
$res = $words[0];
for ($i=1; $i < count($words) - 1; $i++) { 
    $res .= ' '.$words[$i]; // concatenation with a space.
}
echo $res; // Hi, I'm Gian

在搜索 ltrim 和 rtrim 替代品(trim 整个 first/last 词)时,我遇到了这样的帖子。只是想分享我写的功能,当其他人像我一样登陆这里时。

找到给定单词的第一次出现,如果它是第一个单词,return没有第一个单词的句子。

function leftStrTrim($sentence, $word){    
  $wordLength = strlen($word);
  $wordStart = strpos($sentence, $word);    
  if($wordStart!==false && $wordStart==0){
    return substr($sentence, $wordLength);
  }
  return $sentence;    
}

查找给定单词的最后一次出现,如果它是最后一个单词,return没有最后一个单词的句子。

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;    
}