2011-10-11 17 views
17
Warning: Illegal offset type in /email_HANDLER.php on line 85 

$final_message = str_replace($from, $to, $final_message); 

preg_match_all('/<img[^>]+>/i',$final_message, $result); 
$img = array(); 
foreach($result as $img_tag) 
{ 
    preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[$img_tag]); //LINE 85 
} 

誰でも?私はこの上で私の髪をかきむしることを約よ...ここPHP不正なオフセットタイプ

は$ img_tag

$img_tagは、いくつかのタイプのオブジェクトではなく、適切な文字列であると仮定すると、
array(1) { 
    [0]=> 
    string(97) "<img alt='' src='http://pete1.netsos.com/site/files/newsletter/banner.jpg' align='' border='0px'>" 
+2

作品の$ img_tagは何ですか? – jprofitt

+0

var_dump($ img_tag)please – RiaD

+0

これはSimpleXMLのノード操作のようなものだと思いますか? –

答えて

32

の私のvar_dumpである、に$img_tagをキャスト[]

preg_match_all("/(alt|title|src)=('[^']*')/i",(string)$img_tag, $img[(string)$img_tag]); 
//------------------------------------------------------------------^^^^^^^^^ 

内部の文字列のいくつかのオブジェクト型、特にSimpleXMLElement例えば、magic method __toString()経由print/echoに文字列表現を返しますが、STはできないだろう通常の文字列として。それらを配列キーとして使用しようとすると、(string)$objで適切な文字列にキャストしない限り、エラーはillegal offset typeになります。

+0

私はこれらの2つの場所に(文字列)を追加するとき、私はprint_r $ img ....ときに必要な文字列を与えていない画像の場所、任意のアイデアですか? – VACIndustries

+0

'print_r($ result)'を投稿すると、あなたが何をやっているのかが分かります。 –

+0

これも見ておく価値があります。私はこれまでにこれまでに遭遇したことはありませんでした。 http://us3.php.net/language.types.type-juggling.php – Jazzy

9

this PHP bug reportに最初のコメントを参照してください:あなたがキーとして配列またはオブジェクトを使用することはできません

。そうすると警告が表示されます:不正なオフセットタイプ。コードを確認してください。

$img_tagが適切な変数タイプであることを確認してください。

1

$resultは2次元配列です。したがって、$img_tagは配列にする必要があります。

-1
foreach($result[0] as $img_tag) 

をオフセットとして

しかし、唯一の整数と文字列を使用することができる、それは

関連する問題