我的变量看起来像这样:
AAAAAAA, BB CCCCCCCC
AAAA,BBBBBB CCCCCC
我想删除",
"之前的所有内容,
所以结果应该是:
BB CCCCCCCC
BBBBBB CCCCCC
我已经想出了一种方法,可以删除",
"之后的所有内容:
list($xxx) = explode(',', $yyyyy);
不幸的是,我不知道如何让它在",
"之前删除所有内容。
由于这是一种简单的字符串操作,您可以使用以下方法删除第一个逗号之前的所有字符:
$string = preg_replace('/^[^,]*,\s*/', '', $input);
preg_replace()
函数可以基于正则表达式替换字符串的一部分。让我们来看看这个正则表达式。
/ 是起始定界符
^ 是“字符串开头”的锚点
[^,] 表示任何不是逗号的字符(^ 在此处表示否定该类别)
* 表示重复零次或多次
, 表示普通逗号
\s 表示任何空格字符
* 表示重复零次或多次
/ 是结束定界符
','
替换了''
,所以完整的代码会变成:$string = preg_replace('/^[^,]*,\s*/', ',', $input);
- eQ19我不建议使用explode,因为如果有多个逗号会导致更多的问题。
// removes everything before the first ,
$new_str = substr($str, ($pos = strpos($str, ',')) !== false ? $pos + 1 : 0);
编辑:
if(($pos = strpos($str, ',')) !== false)
{
$new_str = substr($str, $pos + 1);
}
else
{
$new_str = get_last_word($str);
}
list(,$xxx) = explode(',', $yyyyy, 2);
$xxx = explode(',', $yyyyy, 2)[1];
。 - kenorb尝试这个代码,它可以获取逗号后面的内容,如果没有逗号,会从最后一个空格处检查,我将其包装成一个函数以便易于使用:
<?php
$value='AAAA BBBBBB CCCCCC';
function checkstr($value){
if(strpos($value,',')==FALSE){
return trim(substr(strrchr($value, ' '), 1 ));
}else{
return trim(substr($value, strpos($value,',')),',');
}
}
echo checkstr($value);
?>
你可以做:
$arr = explode(',', $yyyyy);
unset($arr[0]);
echo implode($arr);
正则表达式通常比较耗费资源,我不建议在这种简单的情况下使用它。 使用explode函数并将其限制为2个参数可能会导致与使用str_pos函数相同的执行时间,但您无需执行其他操作即可生成所需的字符串,因为它存储在第二个索引中。
//simple answer
$str = explode(',', $yyyyy,2)[1];
或者
//better
$arr = explode(',', $yyyyy,2);
$str = isset($arr[1]) ? $arr[1] : '';
s($str)->afterFirst(',')
很有用,该方法是在这个独立的库中找到的。 - caw$xxx = explode(',', $yyyyy, 2)[1];
- kenorb