2012-12-09 133 views
0

我想更換一個陣列的重複一句話,讓我這樣做:的preg_replace陣列PHP的簡單的HTML DOM解析器

$thisarray = preg_replace ("/HELLO/"), "BYE", $thisarray); 

echo $thisarray[0]; 

這完美的作品...問題是當我使用PHP簡單的HTML DOM PARSER指令 「明文」

$thisarray = preg_replace ("/HELLO/"), "BYE", $thisarray); 

echo $thisarray[0]->plaintext; 

它說:注意:試圖讓非對象的財產

+1

的var_dump($ thisarray),並找出如果有語法錯誤明文存在 –

回答

2

$thisarray是EIT她是一串字符串或一組simple_html_dom實例。 挑一個

如果是前者,他們甚至不會是對象,因此不能擁有plaintext屬性。

如果是後者,請小心將它傳遞給需要字符串的函數。需要字符串的函數會根據需要扼住對象或對其進行字符串化。即使假設simple_html_dom知道如何將其自身轉換爲字符串,preg_replace也將返回一個字符串(或字符串數​​組)。這意味着一旦preg_replace做它的事情,你用返回值替換$thisarray,不管它是什麼,現在你有一個字符串數組。往上看。

+0

且不說這個代碼可以永遠不可能想運行。 –

+1

是的,也有。但是,我認爲這只是一個錯字,因爲代碼運行得足夠遠,可以拋出關於非對象屬性的錯誤。 – cHao

+0

哦,我知道,仍然有趣 –

0

首先,preg_replace不是一個高性能的函數,如果你只是想替換一個世界而不是一個模式。對於你的情況,str_replace更好。

然後,你只是誤用$ thisarray變量。在你的函數之前,它是一個對象,之後,它不再是一個對象,因爲preg_replace返回一個字符串或一個數組。

所以,你可以有那種與清潔代碼:

$textToReplace = array('/HELLO/','other world to replace'); 
replacementText = array('BYE','other replacemnt text'); 
$cleanText = str_replace($textToReplace,$replacementText,$thisarray[0]->plaintext); 
echo $cleanText;