PHP修剪并从右侧返回一个字符串

时间:2014-09-13 16:14:56

标签: php

我试图从MySql中获取一个字符串输出(MySql输出X个字符):

$str = 'Buddy you're a boy make a big noise Playin in the stre';

并试图从右侧开始,修剪那些直到第一个空间。当我接受它时听起来很简单,但是现在,它的大脑和手指都在结。

我想要实现的输出很简单:

$str = 'Buddy you're a boy make a big noise Playin in the';

注意,从右边开始直到第一个空格的字符都被删除了。

你能帮忙吗?

My Fiddle

$str = 'Buddy you\'re a boy make a big noise Playin in the stre';

//echo rtrim($str,' ');

5 个答案:

答案 0 :(得分:4)

这是一个有用的习惯用法:要从字符串右侧删除特定字符之前的所有字符(包括该特殊字符),请使用以下内容:

$trimmed = substr($str, 0, strrpos($str, ' '));

...其中' '是特殊字符。

Demo

但是,如果您不知道该字符是否存在,请先检查sttrrpos的结果:

$last_space_index = strrpos($str, ' ');
$trimmed = $last_space_index !== false
  ? substr($str, 0, $last_space_index)
  : $str;

如果您需要修剪多个字符,例如在'hello there test'行中,只需rtrim结果:

$trimmed = rtrim(substr($str, 0, strrpos($str, ' ')), ' ');

但是,在这种情况下,基于正则表达式的解决方案看起来更合适:

$trimmed = preg_replace('/ +[^ ]*$/', '', $str);

答案 1 :(得分:2)

我认为你最好的选择是正则表达式取代:

preg_replace('/\s+\S*$/', '', $str);

输出Buddy you're a boy make a big noise Playin in the

Fiddle

答案 2 :(得分:1)

使用正则表达式可能更容易做到这一点,但我太糟糕了!你应该试试这个:

// Get all the words in an array
$strArray = explode(" ", $str);

// Remove the last word.
array_pop($strArray);

// Get it back into a sentence
$newString = implode(" ", $strArray);

答案 3 :(得分:1)

有一百种方法可以做到这一点,这里有一些选择:

array_pop关于我们从explode创建的数组的最后一个字:

$arr = explode(" ", $str);
$fixed_arr = array_pop($arr);
$result = implode(" ", $arr);

使用regular expressions

$result = preg_replace('/\s+\S*$/', '', $str);

并使用strrpossubstr

$spacePos = strrpos($str, ' ');
$result = substr($str, 0, $spacePos);

答案 4 :(得分:0)

在mysql中使用

left(field,length)

仅输出strlen的第一个数字

右(场,长)具有相反的效果

否则在php中使用substr($ string,0,$ length)或regex