2014-10-08 42 views
2

美好的一天! 無論出於何種原因,請指定數字是否大於10,然後str_replace()$replace參數進行更改,裁剪單位並僅剩幾十個?

輸入數據($data):

... 
<div onclick="window.location.href='/template-04.php?type=users&char=7';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=8';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=9';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=10';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=11';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=12';"></div> 
... 

非常簡單PHP代碼:

for($axx = 0; $axx < 68; $axx ++) 
{ 
    $z = '['.$axx.']'; 

    $newName = 'templ4-user-'.$z.'.html?'.$z; 

    echo '<br>'.$newName; // echo (axx = 13): <br>templ4-user-[13].html?[13] 

    $data = str_replace('template-04.php?type=users&char='.$axx, $newName, $data); 
} 

結果$data不正確。 (if $axx > 10)爲什麼?

... 
<div onclick="window.location.href='/templ4-user-[7].html?[7]';"></div> 
<div onclick="window.location.href='/templ4-user-[8].html?[8]';"></div> 
<div onclick="window.location.href='/templ4-user-[9].html?[9]';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]0';"></div> <------ !!!!!!! 
<div onclick="window.location.href='/templ4-user-[1].html?[1]1';"></div> <------ !!!!!!! 
<div onclick="window.location.href='/templ4-user-[1].html?[1]2';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]3';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]4';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]5';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]6';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]7';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]8';"></div> 
<div onclick="window.location.href='/templ4-user-[1].html?[1]9';"></div> 
<div onclick="window.location.href='/templ4-user-[2].html?[2]0';"></div> 
... 

請大家幫忙。

回答

2

這是因爲在第一次迭代中,所有1都將變成[1],這意味着12將變爲[1]2並且將不再與再次匹配12。

相反的循環,你可以使用的preg_replace:

$data = <<<EOS 
<div onclick="window.location.href='/template-04.php?type=users&char=7';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=8';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=9';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=10';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=11';"></div> 
<div onclick="window.location.href='/template-04.php?type=users&char=12';"></div> 
EOS; 

$pattern = '/template-04.php\?type=users&char=(\d+)/i'; 
$replacement = 'templ4-user-[$1].html?[$1]'; 
echo preg_replace($pattern, $replacement, $data); 

結果:

<div onclick="window.location.href='/templ4-user-[7].html?[7]';"></div> 
<div onclick="window.location.href='/templ4-user-[8].html?[8]';"></div> 
<div onclick="window.location.href='/templ4-user-[9].html?[9]';"></div> 
<div onclick="window.location.href='/templ4-user-[10].html?[10]';"></div> 
<div onclick="window.location.href='/templ4-user-[11].html?[11]';"></div> 
<div onclick="window.location.href='/templ4-user-[12].html?[12]';"></div> 
+0

的解決辦法是在反向進行循環,從68到0 – EpicVoyage 2014-10-08 14:12:22

+0

OMG非常感謝您!許多 – user2771604 2014-10-08 14:18:44