我试图从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';
注意,从右边开始直到第一个空格的字符都被删除了。
你能帮忙吗?
$str = 'Buddy you\'re a boy make a big noise Playin in the stre';
//echo rtrim($str,' ');
答案 0 :(得分:4)
这是一个有用的习惯用法:要从字符串右侧删除特定字符之前的所有字符(包括该特殊字符),请使用以下内容:
$trimmed = substr($str, 0, strrpos($str, ' '));
...其中' '
是特殊字符。
但是,如果您不知道该字符是否存在,请先检查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
答案 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);
并使用strrpos
和substr
:
$spacePos = strrpos($str, ' ');
$result = substr($str, 0, $spacePos);
答案 4 :(得分:0)
在mysql中使用
left(field,length)
仅输出strlen的第一个数字
右(场,长)具有相反的效果
否则在php中使用substr($ string,0,$ length)或regex