2012-09-23 98 views
1

惠!這是我在這裏的第一個問題,如果我沒有把握的話,提前抱歉。PHP循環搜索和替換字符串

我想通過在文本使用#PIC1#(#PIC2#等)插入來自在說明文字畫廊的圖片和與

這裏代替它的是代碼:

<? 
$myString =$art[0][page_text]; 
$pics=mysql_query_assoc("select * from pages_galerie where id_page='".$id_page."'"); 
$count= count($pics); 
for ($i=0; $i < $count; $i++) { 
$search='#pic'.$i+1.'#'; 
$img=$pics[$i][pic]; 
$newString = str_replace($search, "<img src=".SITE_URL."pics/medium/".$img.">", $myString); 
} 
?> 

它不起作用! 我做錯了什麼?

+0

你能舉一個'$ pics'裏的例子嗎? (編輯問題並複製/粘貼其中的一部分) – Izkata

+0

如果'$ id_page'源自GET/POST變量,那就是要求進行SQL注入。另外,你在這行''img = $ pics [$ i] [pic];''它應該是'$ img = $ pics [$ i] ['pic'];' –

+0

只是一個數組鍵小題外話題,但不建議使用短格式的<?'標籤。總是使用長格式<<?php'更好。 (很多PHP服務器都禁用了短標籤) – Spudley

回答

1

試試這個 http://codepad.org/2NBlkDN9

<? 
$myString =$art[0][page_text]; 
$myString = '#pic1# #pic2#'; 
//$pics=mysql_query_assoc("select * from pages_galerie where id_page='".$id_page."'"); 
$pics = array(
    array('pic' => 'TEST1'), 
    array('pic' => 'TEST2'), 
    array('pic' => 'TEST3'), 
); 
$count= count($pics); 

$newString = $myString; 
for ($i=0; $i < $count; $i++) { 
$search='#pic'.($i+1).'#'; 
$img=$pics[$i][pic]; 

$newString = str_replace($search, "<img src=".SITE_URL."pics/medium/".$img.">", $newString); 
} 
echo $newString; 
?> 

你在$myString進行更換並將其存儲在$newString每次。因此只有最後的替換對最終輸出有影響。我已用$myString初始化$newString,並在$newString中執行了替換。

+0

Thanx man!它的工作:) – nickRO87