Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除字符串中的字符?_Php_Regex_String_Preg Match_Substring - Fatal编程技术网

Php 如何删除字符串中的字符?

Php 如何删除字符串中的字符?,php,regex,string,preg-match,substring,Php,Regex,String,Preg Match,Substring,我有很多字符串,需要删除字符串开头的“0”,但更好的方法是什么,因为这是字符串的一个示例: 0130799.jpg //I need to get 130799 0025460.jpg //I need to get 25460 现在,我正在使用substr函数,但我认为如果使用Regex no,效率会更高。只需输入cast就可以了 echo (int) $var; 如果所有字符串([numbers].jpg)的格式都相同,则可以执行以下操作: intval('0130799.jpg', 1

我有很多字符串,需要删除字符串开头的“0”,但更好的方法是什么,因为这是字符串的一个示例:

0130799.jpg //I need to get 130799
0025460.jpg //I need to get 25460

现在,我正在使用substr函数,但我认为如果使用Regex no,效率会更高。

只需输入cast就可以了

echo (int) $var;

如果所有字符串([numbers].jpg)的格式都相同,则可以执行以下操作:

intval('0130799.jpg', 10);

如果使用
substr
则必须将其与
strpos
结合使用,因为
substr
需要知道字符串索引

是的,你最好用正则表达式

如果您的问题是如何从字符串中任意位置的字符串00000ddd.jpg(对于某些数量的零和非零数字)中提取数字,那么您应该使用preg_match

下面是一个完整的示例,您可以试一试


如果整个字符串是一个文件名,则使用
intval
或其他答案中建议的强制转换。

使用正则表达式即可

preg_replace('/^0+/m','',$sourcestring);
^
是字符串的开头(此处使用
m
修饰符作为行的开头)

0+
表示1个或多个零

此正则表达式将匹配所有前导零并替换为空字符串


看吧

的确,这很容易!非常感谢你!对于“000AA00”字符串,这种方式可以吗?结果是“AA00”?哎呀!抢手货我编辑了我的答案,以便它不会拾取前导零。非常抱歉。就像对Ray说的那样,Toal回答:“000AA00”字符串可以用这种方式吗?“AA00”在结果中?@bahamut100 I添加了一个指向正则表达式测试工具的链接,您可以在其中看到它。是的,它还将从“000AA00”中删除前导0,这是您想要的吗?关于正则表达式相对于其他方法的效率,请参见:
preg_replace('/^0+/m','',$sourcestring);