我见过其他人
我有一个字符串" cccc cccc - fff"
我需要返回"cccc cccc"
我也不需要分隔
我试图回应结果
substr($mystring , 0, strpos($mystring , "-"));
但它什么也没有回报
我也试过
list($result, $trash) =split('-', $mystring);
echo $result;
echo $trash;
结果返回主字符串,垃圾没什么结果
更新: 我正在使用wordpress,由于某种原因它不起作用。 我需要修剪我的标题,我正在使用get_the_title()并且我正在尝试修剪它
$mystring =get_the_title();
list($result, $trash) =split('-', $mystring);
echo $result;
答案 0 :(得分:1)
在阅读了ShiraNai7的评论后,您似乎需要基于正则表达式的解决方案。我已根据您的输入以及ShiraNai7的不同版本的短划线测试了我的模式。
模式(Demo):/^ +\K[\w ]+(?= )/
说明:
/
- 开始模式^
- 从字符串+
- 匹配一个或多个空格字符(+号前面有一个文字空格)\K
- 忽略之前匹配的字符,从这一点开始匹配。[\w ]+
- 匹配一个或多个字母数字,下划线或空格字符(?= )
- “积极前瞻”并不能捕捉它匹配的东西;用于在分隔符之前的最后一个空格(短划线/连字符/其他)/
- 结束模式方法(Demo):
$my_string=" cccc cccc - fff";
$result=preg_match('/^ +\K[\w ]+(?= )/',$my_string,$out)?$out[0]:$my_string; // if can't extract, use full string
echo $result;
输出:
cccc cccc
如果这是我的项目,我不会使用正则表达式,我会使用strstr()(再次,确保您使用的是相应的连字符)。
echo trim(strstr($my_string,'-',true));
将 true
将返回连字符前面的子字符串。然后只需trim()
关闭前导和尾随空格。
或者,explode同样有效,它只是在提取所需的子字符串之前生成一个数组:
echo trim(explode('-',$my_string,2)[0]); // don't bother generating more than one element - you only want the first anyhow
答案 1 :(得分:0)
$mystring=" cccc cccc - fff";
$result = explode("-", $mystring);
echo $result[0];
输出为:cccc cccc
答案 2 :(得分:0)
试试这个,查看 live demo here 。
echo trim(explode("-", " cccc cccc - fff -888")[0]);
答案 3 :(得分:-1)
substr(" cccc cccc - fff", 0, 10)