tag strip_tags remove name first ejemplo all php xml simplexml php-7

strip_tags - entidad no terminada referencia php



strip_tags() (6)

Aquí está mi código:

<?php // 27/01/2016 Edit: $result = mysql_query("A Long mysql query"); $rss = new SimpleXMLElement(''<rss version="2.0" />''); $products = $rss->addChild(''products''); /// while($row = mysql_fetch_array($result)){ $product = $products->addChild(''category''); $product->addChild(''product_id'',"$row[product_id]"); $product->addChild(''cat_id'',"$row[cat_id]"); $product->addChild(''cat_name'',"$row[cat_name]"); $product->addchild(''product_code'',"$row[product_code]"); $product->addchild(''product_name'',"$row[product_name]"); $product->addChild(''description'',''$row[description]''); $product->addchild(''rating'',"$row[rating]"); $product->addchild(''image_url'',''$row[imag_url]''); $product->addchild(''price'',"$row[price]"); $product->addchild(''discount'',"$row[discount]"); $product->addchild(''stock_status'',"$row[stock_status]"); $product->addchild(''stock_quantity'',"$row[stock_quantity]"); $product->addchild(''weight'',"$row[weight]"); $product->addchild(''length'',"$row[length]"); $product->addchild(''width'',"$row[width]"); $product->addchild(''height'',"$row[height]"); $product->addchild(''colour'',"$row[colour]"); $product->addchild(''size'',"$row[size]"); $product->addchild(''material'',"$row[material]"); $product->addchild(''pattern'',"$row[pattern]"); }; Header(''Content-type: text/xml''); print($rss->asXML()); ?>

Y aquí está el error:

Advertencia: SimpleXMLElement :: addChild () [simplexmlelement.addchild]: referencia de entidad no terminada _Coke.jpg en C: / wamp / www / rabwah / core.php en la línea 40

El error está en la línea con ''$row[imag_url]'' .


Disculpe por revivir una pregunta anterior, pero hay otra solución para esto ... Suponiendo que el siguiente código cause el error "referencia de entidad no terminada":

$xml->addChild($key,$value);

La solución de @Joel-Davey funciona muy bien:

$xml->addChild($key,htmlspecialchars($value));

Pero también puede hacer lo siguiente si, por alguna razón, no quiere usar la función htmlspecialchars anterior (básicamente, divide el paso en dos pasos):

$xml->addChild($key); $xml->$key=$value;

No tengo idea de cuál se ejecutará más rápido; Dudo que haga una gran diferencia, pero, esto funciona, y pensé que debería mencionarse

PD: sé que funciona porque lo estoy usando en un proyecto personal


Esto codifica correctamente el & < > y "" ''''

$parent->addChild($name, htmlspecialchars($value));


Intenta cambiando -

$product->addchild(''image_url'',''$row[imag_url]'');

A

$product->addchild(''image_url'',"$row[/"imag_url/"]");

O

$product->addchild(''image_url'',$row[''imag_url'']);

EDITAR envolver citas demasiado redondas image_url, cortesía de Barrmar


La forma correcta es:

$product->addchild(''image_url'',htmlspecialchars($row[''imag_url'']));


Mi solución a esto es específicamente crear un nodo de texto, lo que asegura que absolutamente todo se escape correctamente.

$cell = $dom->createElement(''td''); $cell->appendChild($dom->createTextNode($value));


SimpleXMLElement es en realidad un recurso del sistema que se comporta como un objeto. Lo que hace que trabajar con bucles sea complicado. Entonces, al intentar agregar nuevos elementos secundarios en lugar de esto:

$product->addchild(''element'', $value);

hacer esto:

$product->element = $value;

o puede usar htmlspecialchars() , para escapar de los caracteres html.

Nota:

mysql_* está en desuso a partir de php-5.5 y se elimina a partir de php-7 . Así que en lugar de eso use mysqli_* o PDO .
¿Por qué no debería usar las funciones mysql_ * en PHP?