从php中的字符串第一个逗号后删除所有内容

时间:2009-07-15 13:27:42

标签: php

我想从php中字符串的第一个逗号中删除所有内容(包括逗号) 例如

$print="50 days,7 hours";

应该成为 “50天”

6 个答案:

答案 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" |   ""  |
----------------------------------------------------------------------------