2012-07-23 22 views
0

這是我的方法,反正沒有成功,但它可以讓您瞭解我的代碼和編碼技巧,以及我想要實現的功能。php +替換查詢中產生的數組中的文本


$data1 = mysql_query("SELECT * from `todolist` WHERE date > '$today' ") 
or die(mysql_error()); 

$data1b = str_replace("text-to-be-replaced", "replaced-text", $data1); 

while($info1 = mysql_fetch_array($data1b)) 
{ 
Print "".$info1['thingtobedone'] . " with ".$info1['persontomeet'] . "<br />"; 
} 

而且,我的做法是因爲我想要做的是設置了一堆的搜索和替換的情況下什麼不正確。 類似於「搜索X並替換爲Y」而不是僅替換一個替換項的列表。本來我想做的事情就像「替換B for B,並將其重命名爲STEP2」,然後獲得名爲STEP2的數組,然後「搜索C並將其替換爲D,並將其重命名爲STEP3」,但是...我認爲這可能不會是最好的辦法=/

任何建議,指針,更正將不勝感激!提前致謝!

+2

你希望在你的'SELECT'語句中的哪一列執行替換? – 2012-07-23 04:13:52

+0

「mysql_query」的返回值是一個資源,而不是你想要搜索和替換的數據 – 2012-07-23 04:19:49

回答

1

可以使用strtr()功能在PHP中一鍵通=>值對替換規則:

$data = mysql_query('SELECT * FROM todolist WHERE date > CURDATE()') or die(mysql_error()); 

// Array of replacement rules. Keys of the array are strings to be replaced. 
// Corresponding values of the keys are the replacement strings 
$trans = array(
    'stringtoreplace1' => 'replacedstring1', 
    'stringtoreplace2' => 'replacedstring2', 
    'stringtoreplace3' => 'replacedstring3' 
); 

while($info = mysql_fetch_array($data)) 
{ 
    print strtr($info['thingtobedone'], $trans) . ' with ' . $info['persontomeet'] . '<br />'; 
} 

假設thingtobedone是你想在替換列。

然後,當您撥打strtr($info['thingtobedone'], $trans)時,該函數將採用該字符串並將$trans陣列中每個鍵值的所有出現值替換爲其對應的值。這是一次完成多個字符串替換的好方法。

+0

這太棒了!正是我需要的。此外,所提供的解釋也非常讚賞。我試試看,讓你知道它是怎麼回事!再次感謝!! – Khul 2012-07-23 04:55:29