[英]Replacing part of the string with regex
我有一个像这样的字符串:
$string ='//upload.wikimedia.org/wikipedia/commons/thumb/6/6b/AkutanZero1.jpg/220px-AkutanZero1.jpg';
但是我试图用另一部分代替它的一部分:
$string ='//upload.wikimedia.org/wikipedia/commons/thumb/6/6b/AkutanZero1.jpg/123px-AkutanZero1.jpg';
我正在尝试使用preg_replace,并且我知道字符串将始终以/ thumb /(一个十六进制值)/(两个十六进制值)/(填充)/(一个或多个数字)-px-(填充)结尾
不幸的是,我没有成功替换掉文本,也不知道我在做什么错。
如果我可以假设/(一个或多个数字)-px仅存在一次,但是它也可以存在于/(stuff)部分中,那将很容易。
preg_replace('/\/thumb\/[0-9a-f]\/[0-9a-f]{2}\/.+\/([0-9]+)-px-.+$/i', '328', $string);
preg_replace('/(\/thumb\/[0-9a-f]\/[0-9a-f]{2}\/.+\/)([0-9]+)(-px-.+)$/i', $1.'328'.$3, $string);
根据单个样本输入,您不需要任何捕获组即可获得预期结果。 只需找到出现数字的位置,然后找到px-
并交换您的首选值即可。 如果这不够可靠,请改善您的问题。
代码:( 演示 )
$string='//upload.wikimedia.org/wikipedia/commons/thumb/6/6b/AkutanZero1.jpg/220px-AkutanZero1.jpg';
echo preg_replace('/\d+px-/','123px-',$string);
输出:
//upload.wikimedia.org/wikipedia/commons/thumb/6/6b/AkutanZero1.jpg/123px-AkutanZero1.jpg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.