2013-12-18 33 views
0

我確實遇到了問題,在我的情況下,我選擇了 將MYSQL數據庫中的信息保存到$ data中。preg_replace用於替換變量的所有內容

和我有2個數組preg_replace。

這是一個例子:

$repl(); 
$repl[0] = '/bull/'; 
$repl[1] = '/found/'; 
$repl[2] = '/search/'; 

$replto(); 
$replto[0] = 'This is not a ballon'; 
$replto[1] = 'This has been found'; 
$replto[2] = 'Im looking for it'; 

$data = array(); 
$data[0] = '/mynickname/search'; 
$data[1] = '/somebulls/search'; 
$data[2] = '/mcdo/found'; 
$data[3] = '/bump/search'; 
$data[4] = '/blood/bull'; 

echo preg_replace($repl,$replto,$data); 

好,但preg_replace函數的輸出是這樣的:

/mynickname/Im looking for it 
/somebulls/Im looking for it 
/mcdo/This has been found 
/bump/Im looking for it 
/blood/This is not a ballon 

...但我想這樣的輸出:

Im looking for it 
Im looking for it 
This has been found 
Im looking for it 
This is not a ballon 

我'新的PHP,我解決了很多問題,但這是一個問題,我還沒有找到解決方案。

你能幫助我嗎?

+1

'strrpos'(http://php.net/strrpos)和'substr'(http://php.net/substr)的組合應該很容易做到。 –

+0

那麼,代碼的工作原理與您的一樣...我認爲您的邏輯在這裏不正確。如果將'search'替換爲'Im正在尋找它',爲什麼你會認爲'/ mynickname/search'會自動刪除mynickname部分?它只是取代你告訴它的那部分。 – Charlie74

+0

哇...很容易?...不適合我,我認爲這只是addnal在「preg_replace」中的一個事情......就像在SQL中使用LIKE中的%一樣。 – user3114471

回答

0

根據您想要的結果,它看起來像你想要做的事,如:

$repl(); 
$repl[0] = '/.*bull/'; 
$repl[1] = '/.*found/'; 
$repl[2] = '/.*search/'; 
+0

/*將爲0或更多次出現/。這不是你想要的。最重要的是,/正被用作模式分隔符,所以*真的不知道要應用什麼。 –

+0

正確;編輯... –

+0

非常感謝,它完美的工作。不能上去投票答案:/我沒有聲望。現在我能 :) – user3114471

1

十分感謝它完美地工作。

讓像

$repl(); 
$repl[0] = '/.*bull/'; 
$repl[1] = '/.*found/'; 
$repl[2] = '/.*search/'; 

對不起,我遲到回答,不能提前到來。

非常感謝。