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