2011-07-11 63 views
1

我在使用PHP preg_replace时遇到了一些问题。Php Preg_replace带数组的字符串?

我有一个包含图像的URL添加了数字的网址,例如:

$ URL = http://example.com/111.jpg,121,122,123,124,125,126

末的数字总是不同的。

要单独的刺痛,我使用

$部分=爆炸( “”,$网址);

为了找出多少个号码也有,我使用:

$数=计数($部分);

我的问题是,以取代$网址的结尾[0] $部分(从部分[1]达零件[$号-1])

任何想法,我需要改变??

这里是我的代码:

for($i=1;$i<=10;$i++) { 
    $array[] = preg_replace('/\d+.jpg/',sprintf("%01d.jpg",$i),$url[0]); 
} 

<img src="<?php echo($array[0]); ?>"/> 
<img src="<?php echo($array[1]); ?>"/> 
<img src="<?php echo($array[2]); ?>"/> 
<img src="<?php echo($array[3]); ?>"/> 
<img src="<?php echo($array[4]); ?>"/> 
<img src="<?php echo($array[5]); ?>"/> 
<img src="<?php echo($array[6]); ?>"/> 
<img src="<?php echo($array[7]); ?>"/> 
<img src="<?php echo($array[8]); ?>"/> 
<img src="<?php echo($array[9]); ?>"/> 
+1

你的问题是难以解析。你想要的输出是什么? –

+0

看起来不错。问题是什么? – powtac

回答

2

尝试

$array[] = preg_replace('/\d+.jpg/', "{$url[$i]}.jpg"), $url[0]); 

这会拉出同时尾随数字之一。你的原始版本正在取代你的循环计数器,这几乎肯定不会跟随数字一样。

你的是产生

http://example.com/001.jpg 
http://example.com/002.jpg 
etc... 

,你想

http://example.com/121.jpg 
http://example.com/122.jpg 
etc... 
+0

感谢,作品像一个魅力 – grosseskino

0
$url = 'http://example.com/111.jpg,121,122,123,124,125,126'; 
$parts = explode(',', $url); 
$url = array_shift($parts); 

$parts_count = count($parts); 
for($i=0; $i<$parts_count; $i++) { 
    $array[] = preg_replace('/\d+.jpg/', sprintf("%d.jpg", $parts[$i]), $url); 
} 

var_dump($array); 

输出

array(6) { 
    [0]=> 
    string(26) "http://example.com/121.jpg" 
    [1]=> 
    string(26) "http://example.com/122.jpg" 
    [2]=> 
    string(26) "http://example.com/123.jpg" 
    [3]=> 
    string(26) "http://example.com/124.jpg" 
    [4]=> 
    string(26) "http://example.com/125.jpg" 
    [5]=> 
    string(26) "http://example.com/126.jpg" 
}