2014-10-08 5 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

+0

OMG에, 반대로 루프를 수행하는 것 매우 감사합니다! 많은 – user2771604