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

Ktoś? Mam zamiar rozerwać moje włosy się nad tym ...PHP Niedozwolony typ przesunięcia

tutaj jest mój var_dump od $ img_tag

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

Co jest $ img_tag? – jprofitt

+0

var_dump ($ img_tag) please – RiaD

+0

Zgaduję, że jest to wynik czegoś w rodzaju operacji węzła z SimpleXML? –

Odpowiedz

32

Zakładając $img_tag jest przedmiotem pewnego typu, zamiast właściwego łańcucha, aby rzucić $img_tag ciąg wewnątrz []

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

niektórych typów obiektów, zwłaszcza SimpleXMLElement na przykład zwróci reprezentację ciąg do print/echo poprzez magic method __toString(), ale nie może st i w regularnych strunach. Próby użycia ich jako kluczy tablicowych spowodują błąd illegal offset type, chyba że zostaną przesłane do odpowiednich ciągów znaków przez (string)$obj.

+0

teraz, gdy dodaję (ciąg) do tych dwóch lokalizacji, to nie daje ciągów, których potrzebuję, gdy print_r $ img .... co jest lokalizacje obrazu, wszelkie pomysły? – VACIndustries

+0

Opublikuj 'print_r ($ result)', abyśmy mogli zobaczyć, od czego zaczynasz. –

+0

Warto to także zobaczyć. Dobry telefon, nigdy wcześniej nie wpadłem na to. http://us3.php.net/language.types.type-juggling.php – Jazzy

9

Zobacz pierwszy komentarz na this PHP bug report:

Nie można używać tablic lub przedmiotów jak klucze. Takie działanie spowoduje ostrzeżenie: Nielegalny typ przesunięcia. Sprawdź swój kod.

Upewnij się, że $img_tag ma odpowiedni typ zmiennej.

1

$result to dwuwymiarowa tablica.Tak, $img_tag powinna być tablicą.

Ale tylko liczby całkowite i ciągi mogą być użyte jako przesunięcie

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

działa

Powiązane problemy