preg_replace数组php简单的html dom解析器

时间:2012-12-09 15:06:32

标签: php preg-replace

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

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

echo $thisarray[0];

这很有效......当我使用PHP SIMPLE HTML DOM PARSER指令“plaintext”时会出现问题

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

echo $thisarray[0]->plaintext;

它说:注意:尝试在

中获取非对象的属性

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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;