在PHP中删除从字符的第一次出现到字符串结尾的所有内容

lztngnrs  于 2023-06-04  发布在  PHP
关注(0)|答案(6)|浏览(766)

我想删除PHP中字符串第一个逗号的所有内容(包括逗号)。
比如说

$print = "50 days,7 hours";

应该成为

50 days
xurqigkl

xurqigkl1#

这里有一个方法:

$print = preg_replace('/^([^,]*).*$/', '$1', $print);

另一个:

list($print) = explode(',', $print);

或者:

$print = explode(',', $print)[0];
euoag5mw

euoag5mw2#

这应该对你有用:

$r = (strstr($print, ',') ? substr($print, 0, strpos($print, ',')) : $print);
# $r contains everything before the comma, and the entire string if no comma is present
yhived7q

yhived7q3#

你可以使用一个正则表达式,但如果它总是一对逗号,我只会这样做:

$printArray = explode(",", $print);
$print = $printArray[0];
ykejflvf

ykejflvf4#

你也可以使用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
kq4fsx7k

kq4fsx7k5#

$string="50 days,7 hours";  
$s = preg_split("/,/",$string);
print $s[0];
3b6akqbq

3b6akqbq6#

如果要使用strstr(),则需要100%确定字符串中存在逗号,或者准备好处理false返回值。将其第三个参数设置为true,以访问第一个出现的逗号之前的所有字符。如果没有逗号,则返回值为false
preg_replace()可能是效率最低的,但它是单个函数调用,如果找不到逗号,我将使用的模式不会改变字符串。如果输入字符串中可能包含换行符,请使用s模式修饰符允许点(.)也匹配这些字符。
strtok()是一个简洁的工具,但我发现它的名字比其他函数表达得更少/更神秘(也许这是我个人对strstr()的偏见。这可能会使您的代码的未来读者感到困惑或速度变慢。如果输入字符串没有长度,则此函数将返回false
如果你打算使用explode(),那么不要要求php执行超过1次的爆炸。这个函数的好处是,如果逗号不存在,那么它将返回整个字符串。我不喜欢使用explode(),因为它会生成一个数组,从该数组中访问第一个元素--我不喜欢生成超出需要的数据。
sscanf()对于这个任务来说有点太笨拙了,因为需要使用一个取反的字符类以及null合并运算符。如果分隔符是空格,则可以使用%s,但仍然需要空合并运算符,因为sscanf()不会进行零长度匹配。
产品编号:(Demo)(Demo if no comma)(Demo if string empty
| | 50天7小时|“50天”|”“你说什么?”|
| - -----|- -----|- -----|- -----|
| strstr($print, ',', true)|“50天”|假的|假的|
| preg_replace('/,.*/', '', $print)|“50天”|“50天”|”“你说什么?”|
| strtok($print, ",")|“50天”|“50天”|假的|
| explode(',', $print, 2)[0]|“50天”|“50天”|”“你说什么?”|
| sscanf($print, '%[^,]')[0] ?? $print|“50天”|“50天”|”“你说什么?”|

相关问题