[myqsl] remplacer caractères html par caractères "normaux"

Répondre
doudi
le 06/08/2010 à 16:20
doudi
Salut,

J'ai une base de données d'articles avec un champ titre et un champ text mais le problème c'est que j'ai deux types de caractères différents selon l'article.

Par exemple, dans le champ text de l'article n°1 le texte est en utf8.

Par contre dans le champ text de l'article n°2 le texte est en langage html du type "& #65 & #102 & #116 <br>".

J'aimerais épurer tous les champs "text" de ma table articles et tout mettre en langage compréhensible pour ne plus avoir de caractères html !

J'ai donc fait ce petit code php mais l'update ne fonctionne pas car il n'y a aucun changement ! les caractères html sont toujours présents dans les champs text !

<?php
include("db.inc.php");

$req = mysql_query("SELECT idarticle,text FROM articles");

while ($row = mysql_fetch_array($req)){

echo html_entity_decode($row['text']); // l'echo m'affiche le texte en langage lisible mais quand je fais "code source" en cliquant droite sur la page html avec ma souris, ça m'affiche en langage html.

mysql_query("UPDATE articles SET text= '".html_entity_decode($row['text'])."' WHERE idarticle=".$row['idarticle']." LIMIT 1");

}

mysql_free_result($req);

?>


Si quelqu'un pouvait m'aider ça serait sympa smiley
LupusMic
le 07/08/2010 à 04:13
LupusMic
Je n'ai pas directement testé ton code. Mais chez moi, j'arrive au résultat escompté :
<?php

$cre_sql = 'create table corrupted (id integer not null auto_increment, data char(100), primary key (id))' ;
$selall_sql = 'select * from corrupted' ;
$drop_sql = 'drop table corrupted' ;

$ins_fmt = 'insert into corrupted (data) values (\'%s\')' ;
$upd_fmt = 'update corrupted set data = \'%2$s\' where id = \'%1$s\'' ;

$values = array
( 'Toto' => 'Toto'
, 'Toto &amp; Tata' => 'Toto & Tata'
, '&#65;' => 'A'
, '&#102;' => 'f'
, '&#116;' => 't'
, '\' and \'w00t' => '\' and \'w00t'
) ;

$con = new mysqli('localhost', 'test', '', 'test') ;
$con->query($cre_sql) or die($con->error) ;

try
{
foreach(array_keys($values) as $value)
{
$ins_sql = sprintf($ins_fmt, $con->real_escape_string($value)) ;
if(!$con->query($ins_sql))
throw new exception($con->error) ;
}

foreach($con->query($selall_sql)->fetch_all() as $tuple)
{
$old = $tuple[1] ;
$new = html_entity_decode($old) ;

assert('$new == $values[$old]') ;

$tuple[1] = $new ;
$upd_sql = vsprintf($upd_fmt, $tuple) ;
$con->query($upd_sql) ;
}
}
catch(exception $e)
{
$con->query($drop_sql) ;
throw $e ;
}

$con->query($drop_sql) ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours