删除 php 中分隔符后的部分字符串
remove part of string after delimiter in php
我看过其他的
我有一个字符串 " cccc cccc - fff"
我需要 return "cccc cccc"
我也不需要定界符
我试图回应的结果
substr($mystring , 0, strpos($mystring , "-"));
但它 return 没什么
我也试过
list($result, $trash) =split('-', $mystring);
echo $result;
echo $trash;
结果 returned 主字符串和垃圾没有结果
更新:
我正在使用 wordpress,但由于某种原因它无法正常工作。
我需要 trim 我的标题,我正在使用 get_the_title() 并且我正在尝试 trim it
$mystring =get_the_title();
list($result, $trash) =split('-', $mystring);
echo $result;
$mystring=" cccc cccc - fff";
$result = explode("-", $mystring);
echo $result[0];
输出为:cccc cccc
试试这个,检查 live demo here。
echo trim(explode("-", " cccc cccc - fff -888")[0]);
阅读 ShiraNai7 的评论后,您似乎需要一个基于正则表达式的解决方案。我已经根据您的输入以及 ShiraNai7 的不同版本的破折号测试了我的模式。
模式(Demo):/^ +\K[\w ]+(?= )/
解释:
/
- 开始模式
^
- 从字符串的开头开始匹配
+
- 匹配一个或多个 spaces 个字符(+号前有文字 space)
\K
- 忽略之前匹配的字符,从这里开始匹配。
[\w ]+
- 匹配一个或多个字母数字、下划线或 space 字符
(?= )
- "positive lookahead" 没有捕获它匹配的内容;用于在分隔符 (dash/hyphen/whatever) 之前的最终 space 之前停止匹配
/
- 结束模式
方法(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()
将 "before_needle"(第三个参数)设置为 true
将 return 连字符之前的子字符串。然后只需 trim()
关闭前导和尾随白色-spaces.
或者,explode 也同样有效,它只是在提取所需的子字符串之前生成一个数组:
echo trim(explode('-',$my_string,2)[0]); // don't bother generating more than one element - you only want the first anyhow
substr("cccc cccc - fff", 0, 10)
我看过其他的
我有一个字符串 " cccc cccc - fff"
我需要 return "cccc cccc"
我也不需要定界符
我试图回应的结果
substr($mystring , 0, strpos($mystring , "-"));
但它 return 没什么
我也试过
list($result, $trash) =split('-', $mystring);
echo $result;
echo $trash;
结果 returned 主字符串和垃圾没有结果
更新: 我正在使用 wordpress,但由于某种原因它无法正常工作。 我需要 trim 我的标题,我正在使用 get_the_title() 并且我正在尝试 trim it
$mystring =get_the_title();
list($result, $trash) =split('-', $mystring);
echo $result;
$mystring=" cccc cccc - fff";
$result = explode("-", $mystring);
echo $result[0];
输出为:cccc cccc
试试这个,检查 live demo here。
echo trim(explode("-", " cccc cccc - fff -888")[0]);
阅读 ShiraNai7 的评论后,您似乎需要一个基于正则表达式的解决方案。我已经根据您的输入以及 ShiraNai7 的不同版本的破折号测试了我的模式。
模式(Demo):/^ +\K[\w ]+(?= )/
解释:
/
- 开始模式^
- 从字符串的开头开始匹配+
- 匹配一个或多个 spaces 个字符(+号前有文字 space)\K
- 忽略之前匹配的字符,从这里开始匹配。[\w ]+
- 匹配一个或多个字母数字、下划线或 space 字符
(?= )
- "positive lookahead" 没有捕获它匹配的内容;用于在分隔符 (dash/hyphen/whatever) 之前的最终 space 之前停止匹配
/
- 结束模式
方法(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()
将 "before_needle"(第三个参数)设置为 true
将 return 连字符之前的子字符串。然后只需 trim()
关闭前导和尾随白色-spaces.
或者,explode 也同样有效,它只是在提取所需的子字符串之前生成一个数组:
echo trim(explode('-',$my_string,2)[0]); // don't bother generating more than one element - you only want the first anyhow
substr("cccc cccc - fff", 0, 10)