繁体   English   中英

用正则表达式替换部分字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM