Php 如何删除字符串中的第一个数字?

Php 如何删除字符串中的第一个数字?,php,Php,如何删除字符串中的第一个数字?假设这48个数字用“,”(逗号)分隔: 如何从字符串中删除“8”?谢谢。如果“8”大于9,这样做有效 $numbers = substr($numbers, strpos($text,",") + 1); 事实上。这是我认为最有效的方法,因为它没有将字符串转换为数组或其他什么。信息技术他刚把绳子剪断 $text = "8,5,8,10,15,20,27,25,60,31,2"; 首先,您可以爆炸: $array = explode(',', $text); 然

如何删除字符串中的第一个数字?假设这48个数字用“,”(逗号)分隔:


如何从字符串中删除“8”?谢谢。

如果“8”大于9,这样做有效

$numbers = substr($numbers, strpos($text,",") + 1);
事实上。这是我认为最有效的方法,因为它没有将字符串转换为数组或其他什么。信息技术他刚把绳子剪断

$text = "8,5,8,10,15,20,27,25,60,31,2";
首先,您可以爆炸:

$array = explode(',', $text);
然后删除第一个元素:

array_shift($array);
在最后结束,加入:

echo implode(',' $array);
删除第一个逗号以下的所有字符:

ltrim(strstr($numbers, ','), ',');
ltrim(ltrim($numbers, '01234567890'), ',');
删除第一个逗号以下的所有数字:

ltrim(strstr($numbers, ','), ',');
ltrim(ltrim($numbers, '01234567890'), ',');
稍微快一点的版本,删除第一个非数字之前的所有数字

substr($numbers, strspn($numbers, '1234567890')+1);

以下假设您至少有2个数字(并且速度很快):

这也适用于单个数字(但使用正则表达式):


所有这些都提供了不同的解决方案,所以这里有另一个简单的解决方案

$mystring = "8,5,8,10,15,20,27,25,60,31,25,39,25,31";
$pos = strpos($mystring, ",");
$pos1 = $pos+1; // add the comma position by 1
echo substr($mystring, $pos1);

STRPO中的
r
过多;)8永远不会大于9:困惑:我永远不会理解为什么人们使用
explode
进行这样的简单字符串操作。这是我的第一个想法。我上次用PHP写东西是在一年多以前。我认为字符串上的操作是更好的解决方案。这就是为什么我对另一个答案投了票;)唯一的理由是OP可能需要一个数组,而不是一个字符串。此外,这是为数不多的答案之一,它实际上会从字符串中删除第一个数字,并保留数字和字符串的其余部分。然而,如果你确定你只需要一个号码,索尔默的答案会更有效。索尔默的回答为爆炸提供了一个极好的理由。这个答案被低估了很多!这是目前为止最好的解决方案。我做了一个快速测试,因为我很好奇——这确实比@soulmerge的答案更有效——但只需要大约90字节的内存和几微秒。事实上,在某些情况下,
爆炸
的速度稍快一些。但一般来说,速度上的差异可以忽略不计。这种实现的唯一缺点是它假设存在comma@soulmerge它还假设除了数字和逗号之外没有其他字符,但是分解也假设字符串中有逗号。不是吗?:)我惊讶地发现,这并不比索尔默的答案快多少,也不比多西德的答案快多少。这很奇怪,因为我认为你的会比两者都快…@Josh my Zend Debugger给出了@soulmerge的解决方案以及@dotsid和我的解决方案的平均时间为0.000003。重复10公里时有一点差别。在没有操作码缓存的情况下,我发现@soulmerge的解决方案可以以一半的速度运行,但即使这样,也没什么好谈的。我没有测试内存使用情况,这对于explode示例来说是很有趣的,但我怀疑它不会被忽略。另一方面,到目前为止,我的第二个代码是唯一一个删除数字的代码,而不是像所有其他解决方案那样删除任何字符。当我(粗略地)基准测试内存使用情况时,soulmerge的爆炸限制为1,只多使用了90个字节——但考虑到你实际上可以保留第一个数字,这是非常值得的!我同意性能上的差异完全可以忽略不计。是的,你有唯一的答案,只删除数字。
preg_replace('/^.*?,/', '', $string);
$mystring = "8,5,8,10,15,20,27,25,60,31,25,39,25,31";
$pos = strpos($mystring, ",");
$pos1 = $pos+1; // add the comma position by 1
echo substr($mystring, $pos1);
substr(strstr("8,5,8,10,15,20,27,25,60,31,25,39,25,31",","),1);