在php中分隔符后删除部分字符串

时间:2017-05-14 13:28:56

标签: php wordpress string substr

我见过其他人 我有一个字符串" 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;

4 个答案:

答案 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));
strstr()的

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)