我想从php中字符串的第一个逗号中删除所有内容(包括逗号) 例如
$print="50 days,7 hours";
应该成为 “50天”
答案 0 :(得分:26)
这是一种方式:
$print=preg_replace('/^([^,]*).*$/', '$1', $print);
另一个
list($firstpart)=explode(',', $print);
答案 1 :(得分:9)
这应该适合你:
$r = (strstr($print, ',') ? substr($print, 0, strpos($print, ',')) : $print);
# $r contains everything before the comma, and the entire string if no comma is present
答案 2 :(得分:6)
你可以使用正则表达式,但如果它总是与逗号一起配对,我就这样做:
$printArray = explode(",", $print);
$print = $printArray[0];
答案 3 :(得分:5)
您还可以使用current功能:
$firstpart = current(explode(',', $print)); // will return current item in array, by default first
该系列的其他功能:
$nextpart = next(explode(',', $print)); // will return next item in array
$lastpart = end(explode(',', $print)); // will return last item in array
答案 4 :(得分:3)
$string="50 days,7 hours";
$s = preg_split("/,/",$string);
print $s[0];
答案 5 :(得分:0)
如果您打算使用 strstr()
,那么您需要 100% 确保字符串中存在逗号或准备好处理 false
返回值。将其第三个参数设置为 true
以访问第一个出现的逗号之前的所有字符。如果没有逗号,则返回值将是 false
。
preg_replace()
可能效率最低,但它是单个函数调用,如果找不到逗号,我将使用的模式不会改变字符串。如果您的输入字符串中可能包含换行符,请使用 s
模式修饰符以允许点 (.
) 也匹配这些字符。
strtok()
是一个简洁易用的工具,但我发现它的名字比其他函数表达能力差/更神秘(也许这是我个人对 strstr()
的偏见。这可能会造成混淆或缓慢降低您代码的未来读者。如果输入字符串没有长度,此函数将返回 false
。
如果你打算使用explode()
,那么不要让php执行2次以上的爆炸。这个函数的好处是,如果逗号不存在,那么它将返回整个字符串。我不喜欢使用 explode()
,因为它生成一个数组,其中第一个元素被访问——我不喜欢生成比我需要的更多的数据。
代码:(Demo) (Demo if no comma) (Demo if string empty)
| "50 days,7 hours" | "50 days" | "" |
-----------------------------------|-------------------|-----------|-------|
strstr($print, ',', true) | "50 days,7 hours" | false | false |
-----------------------------------|-------------------|-----------|-------|
preg_replace('/,.*/', '', $print) | "50 days,7 hours" | "50 days" | "" |
-----------------------------------|-------------------|-----------|-------|
strtok($print, ",") | "50 days,7 hours" | "50 days" | false |
-----------------------------------|-------------------|-----------|-------|
explode(',', $print, 2)[0] | "50 days,7 hours" | "50 days" | "" |
----------------------------------------------------------------------------