Insertar embed de twitter en la base de datos [solucionado]

Iniciado por soru13, 27 Abril 2013, 01:29 AM

0 Miembros y 1 Visitante están viendo este tema.

soru13

Hola, el caso es que estoy intentando hacer embed a tweets.

El código del embed es como el siguiente:

<blockquote class="twitter-tweet" lang="es"><p>Yallah <a href="http://t.co/Xd4y23ljAc" title="http://twitter.com/LobogrisSDJ/status/327892801327095808/photo/1">twitter.com/LobogrisSDJ/st...</a></p>&mdash; Ivan tramontana (@LobogrisSDJ) <a href="https://twitter.com/LobogrisSDJ/status/327892801327095808">26 de abril de 2013</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>


el caso es que si lo meto a mano desde el phpmyadmin me lo carga correctamente, pero al hacer la consulta "INSERT INTO ... " desde mi página en PHP, me he dado cuenta que el campo sólo me llega a insertar una cierta parte de la cadena. La cadena termina justo antes del "&mdash", es decir, queda así cuando lo inserto desde php:

<blockquote class="twitter-tweet" lang="es"><p>Yallah <a href="http://t.co/Xd4y23ljAc" title="http://twitter.com/LobogrisSDJ/status/327892801327095808/photo/1">twitter.com/LobogrisSDJ/st...</a></p>

Creo que es un problema por el caracter html que aparece en el embed (&mdash;). He probado con un str_replace, pero no sirve.

La variable donde guardo este embed se llama "url2".

El INSERT INTO en php funciona correctamente y no tiene nada extraño:

Código (php) [Seleccionar]

$this->mysql->consultar("SET titulo,descripcion,tags utf8");
$sql = $this->mysql->consultar("INSERT INTO media (titulo,descripcion,tipo,estado,url,thumb,positivos,negativos,vistas,fecha,tags) VALUES ('".$titulo."','".$descripcion."','".$tipo."','".$estado."','".$url2."','".$thumb."',0,0,0,'".$fecha."','".$tags."')");

if($sql == true)
echo 1; //correcto
else
echo 0; //error


¿Cómo puedo solucionarlo? ¿Realmente es ese el problema?

Un saludo y gracias.

EFEX

hay que ver por que... fijate si en la clase que usas para realizar la conexión a la db tenga alguna funcion para mostrar los errores.

O podes agregar estas dos lineas para mostrar el error.

Código (php) [Seleccionar]

ini_set('display_errors',1);
error_reporting(E_ALL);


O podes convertirlo todo en una cadena de caracteres(base64), utilizando base64_encode() y luego base64_decode.
GITHUB 

soru13

Muchas gracias EFEX, pero no me funcionó.

Lo conseguí arreglar lipiando la cadena con javascript en el formulario antes de ser procesada por PHP.

Código (javascript) [Seleccionar]

url = url.replace(/<blockquote class="twitter-tweet" lang="es">/, "")
url = url.replace(/&mdash; /, "")
url = url.replace(/<\/blockquote>/, "")
url = url.replace(/<script async src="\/\/platform.twitter.com\/widgets.js" charset="utf-8"><\/script>/, "")


Un saludo.