PHP:如何从String中删除最后一个单词?

Kiu*_*uki 6 php string replace

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

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

Ahm*_*ani 24

试试这个:

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

出去

Hi, I'm Gian
Run Code Online (Sandbox Code Playgroud)

  • 好(泰)!!!如果字符串以“Gian@Marco.it 29348 39388”等数字结尾,我想删除“39388”?(我不知道数字) (2认同)
  • @Kiuki试试这个: $str= preg_replace('~\\s+\\S+$~', "", $txt); (2认同)

Nis*_* Up 8

你可以用正则表达式来做.(见Ahmed Ziani的回答.)

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

$text = "Hi, I'm Gian Marco";
$last_space_position = strrpos($text, ' ');
$text = substr($text, 0, $last_space_position);
echo $text;
Run Code Online (Sandbox Code Playgroud)


小智 6

检查一下

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

echo implode( " ", $words );
?>
Run Code Online (Sandbox Code Playgroud)

source:从字符串中删除最后两个单词

  • 对此进行投票,因为它在不使用正则表达式的情况下回答了 OP 的问题。 (2认同)

cpu*_*rou 6

如果您不知道最后一个单词并且字符串长度很短,则当前的解决方案是可以的。

如果您确实知道它,例如在为这样的查询循环 concat 字符串时:

        foreach ($this->id as $key => $id) {
            $sql.=' id =' . $id . ' OR ';
        }
Run Code Online (Sandbox Code Playgroud)

更好的解决方案:

        $sql_chain = chop($sql_chain," OR ");
Run Code Online (Sandbox Code Playgroud)

请注意,带有正则表达式的 preg_replace对于长字符串非常慢。在这种情况下,Chop 的速度要快 100 倍,而且性能增益可能很大。