我有一个这样的字符串:
$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 /(十六进制值)/(两个十六进制值)/(stuff)/(一个或多个数字)-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);
答案 0 :(得分:0)
根据您的单个样本输入,您不需要任何捕获组来获得预期结果。只需找到数字后跟px-
的数字,然后交换您的首选值。如果这还不够强大,请改进您的问题。
代码:(Demo)
$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