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 インスタンスの配列のいずれかです。 1 つ選んでください。

前者だとオブジェクトにもならないので、plaintextプロパティを持つことができません。

後者の場合は、文字列を期待する関数に渡す際に注意してください。文字列を必要とする関数は、オブジェクトをチョークするか、必要に応じて文字列化します。simple_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 に答える