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

¿Alguien? Estoy a punto de romper el pelo a lo largo de esta ...PHP Tipo de compensación ilegal

aquí es mi var_dump de $ img_tag

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

¿Qué es $ img_tag? – jprofitt

+0

var_dump ($ img_tag) por favor – RiaD

+0

Supongo que este es el resultado de algo así como una operación de nodo con SimpleXML? –

Respuesta

32

Suponiendo $img_tag es un objeto de algún tipo, en lugar de una cadena adecuada, fundido a $img_tag una cadena dentro de los []

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

Algunos tipos de objetos, en particular SimpleXMLElement por ejemplo, devolverá una representación de cadena a través de la print/echomagic method __toString(), pero no puede st y en cadenas regulares. Los intentos de utilizarlos como claves de matriz producirán el error illegal offset type a menos que los transfiera a las cadenas correctas a través del (string)$obj.

+0

ahora cuando agrego (cadena) a esas dos ubicaciones, no da las cadenas que necesito cuando imprimo_r $ img .... ¿cuál es la ubicación de las imágenes, alguna idea? – VACIndustries

+0

Publique 'print_r ($ result)' para que podamos ver con qué está empezando. –

+0

Esto vale la pena mirar, también. Buena decisión, nunca me había encontrado con esto antes. http://us3.php.net/language.types.type-juggling.php – Jazzy

9

Ver primer comentario sobre this PHP bug report:

No puede utilizar matrices u objetos como claves. Si lo hace, aparecerá una advertencia: tipo de compensación ilegal. Verifica tu código.

Asegúrese de que $img_tag sea del tipo de variable apropiado.

1

$result es 2-dimentional array.So, $img_tag debe ser una matriz.

Pero sólo enteros y cadenas pueden utilizarse como compensar

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

funciona

Cuestiones relacionadas