Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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-删除URL中数字之前的零_Php_Regex_Url_Preg Replace_Zero - Fatal编程技术网

PHP-删除URL中数字之前的零

PHP-删除URL中数字之前的零,php,regex,url,preg-replace,zero,Php,Regex,Url,Preg Replace,Zero,我正在编写一个api来捕获远程XML的缩略图。 但出于某种原因,XML给了我一个url,它以一个数字加上.jpg扩展名结尾。但是这个url是不成功的,我在数字和url工作之前删除了零,所以有没有办法用PHP从url中删除这些零呢 失败URL: https://cdn.example.com/z=e0fg4/video/2234554/04/101123142/original/015.jpg 好网址: https://cdn.example.com/z=e0fg4/video/2234554

我正在编写一个api来捕获远程XML的缩略图。 但出于某种原因,XML给了我一个url,它以一个数字加上.jpg扩展名结尾。但是这个url是不成功的,我在数字和url工作之前删除了零,所以有没有办法用PHP从url中删除这些零呢

失败URL:

https://cdn.example.com/z=e0fg4/video/2234554/04/101123142/original/015.jpg
好网址:

https://cdn.example.com/z=e0fg4/video/2234554/04/101123142/original/15.jpg 

我已经好几年没有做过PHP了,但是像这样的东西可能会奏效

preg_replace("/(.*)(0)([\d]*\.jpg)$/", "$1$3", $input_lines);

对于多个尾随零,请使用以下命令:

preg_replace("/(.*\/original\/)(0*)([\d]*\.jpg)$/", "$1$3", $input_lines);

我已经好几年没有使用过PHP了,但是像这样的东西可能会奏效

preg_replace("/(.*)(0)([\d]*\.jpg)$/", "$1$3", $input_lines);

对于多个尾随零,请使用以下命令:

preg_replace("/(.*\/original\/)(0*)([\d]*\.jpg)$/", "$1$3", $input_lines);

为了以防万一,我修改了Baruch的答案,因为它仅限于单词/original/前面的url,以接受我所做的以下修改:

preg_replace("/(\/.*\/)(0*)([\d]*\.jpg)$/", "$1$3", $input_lines);

为了防止有人需要它,我修改了Baruch的答案,因为它仅限于单词/original/前面的url,以接受我所做的以下修改:

preg_replace("/(\/.*\/)(0*)([\d]*\.jpg)$/", "$1$3", $input_lines);

015.jpg
是一个单独的值,还是始终是一个完整的URL?如果它始终是一个完整的URL,那么
/original/
是否始终是它的一部分?/original/将始终是它的一部分,并且/015.jpg可能会有所不同,例如/006.jpg
\/(0*)\w+\。
这是
015.jpg
一个单独的值,还是始终是一个完整的URL?如果它始终是一个完整的URL,那么
/original/
是否始终是它的一部分?/original/将始终是它的一部分,并且/015.jpg可能会有所不同,例如/006.jpg
\/(0*)\w+\.
这个?如果有超过1个零,您会怎么做。它似乎可以工作,但只提取了1个零。我明白了:警告:preg_replace():未知修饰符“'$data=preg_replace(“/(.\/original/)(0*)([\d]*\.jpg)$/”,“$1$3”,$data);如果实际上有一个前导的
0
,您可能只想进行替换,否则您只是在浪费时间。因此,我建议将查找零个或多个
0
0*
替换为至少需要一个
0
0+
。好的,我刚刚做了一些测试,现在效果很好。请注意,我漏掉了“/”,因为否则我会在PHP中出错。preg\u replace(“/(.\/原件\/)(0+([\d]*\.jpg)$/”、“$1$3”、$input\u行);如果超过零,你会怎么做。它似乎可以工作,但只提取了1个零。我明白了:警告:preg_replace():未知修饰符“'$data=preg_replace(“/(.\/original/)(0*)([\d]*\.jpg)$/”,“$1$3”,$data);如果实际上有一个前导的
0
,您可能只想进行替换,否则您只是在浪费时间。因此,我建议将查找零个或多个
0
0*
替换为至少需要一个
0
0+
。好的,我刚刚做了一些测试,现在效果很好。请注意,我漏掉了“/”,因为否则我会在PHP中出错。preg\u replace(“/(.\/原件\/)(0+([\d]*\.jpg)$/”、“$1$3”、$input\u行);