2011-10-11 31 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 
} 

Bất kỳ ai? Tôi về để xé tóc của tôi ra trên này ...Loại bù trừ bất hợp pháp PHP

đây là var_dump của tôi $ img_tag

array(1) { 
    [0]=> 
    string(97) "<img alt='' src='http://pete1.netsos.com/site/files/newsletter/banner.jpg' align='' border='0px'>" 
+2

gì là $ img_tag? – jprofitt

+0

var_dump ($ img_tag) xin vui lòng – RiaD

+0

Tôi đoán đây là kết quả của một cái gì đó giống như một hoạt động nút với SimpleXML? –

Trả lời

32

Giả sử $img_tag là một đối tượng của một số loại, chứ không phải là một chuỗi thích hợp, đúc $img_tag để một chuỗi bên trong []

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

một số loại đối tượng, đặc biệt là SimpleXMLElement ví dụ, sẽ trả về một chuỗi đại diện cho print/echo qua magic method __toString(), nhưng không thể st và trong các chuỗi thông thường. Các nỗ lực sử dụng chúng làm khóa mảng sẽ mang lại lỗi illegal offset type trừ khi bạn truyền chúng đến các chuỗi thích hợp qua (string)$obj.

+0

bây giờ khi tôi thêm (chuỗi) vào hai vị trí đó, nó không cung cấp chuỗi mà tôi cần khi tôi in_r $ img .... đó là vị trí hình ảnh, bất kỳ ý tưởng nào? – VACIndustries

+0

Đăng 'print_r ($ result)' để chúng ta có thể thấy những gì bạn đang bắt đầu. –

+0

Điều này đáng xem. Cuộc gọi tốt, tôi chưa bao giờ gặp phải điều này trước đây. http://us3.php.net/language.types.type-juggling.php – Jazzy

9

Xem xét đầu tiên về this PHP bug report:

Bạn không thể sử dụng mảng hoặc đối tượng như phím. Làm như vậy sẽ dẫn đến cảnh báo: Loại bù trừ bất hợp pháp. Kiểm tra mã của bạn.

Đảm bảo rằng $img_tag là loại biến thích hợp.

1

$result là mảng 2 chiều. Do đó, $img_tag phải là một mảng.

Nhưng chỉ số nguyên và chuỗi có thể được sử dụng như bù đắp

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

nó hoạt động

Các vấn đề liên quan