0

我想替换数组的重复单词,所以我这样做:

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

echo $thisarray[0];

这很完美......当我使用 PHP SIMPLE HTML DOM PARSER 指令“纯文本”时,问题就来了

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

echo $thisarray[0]->plaintext;

它说:注意:试图获取非对象的属性

4

2 回答 2

2

$thisarray是字符串数组或 simple_html_dom 实例数组。 选一个

如果是前者,它们甚至都不是对象,因此不能有plaintext属性。

如果是后者,请小心将其传递给需要字符串的函数。需要字符串的函数要么阻塞对象,要么根据需要对它们进行字符串化。即使假设 asimple_html_dom知道如何将自己转换为字符串,preg_replace也会返回一个字符串(或字符串数​​组)。这意味着一旦preg_replace做了它的事情,你$thisarray用返回值替换,不管它以前是什么,现在你有一个字符串数组。看上面。

于 2012-12-09T15:11:21.363 回答
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;
于 2012-12-09T15:13:57.517 回答