Foros del Web » Programando para Internet » PHP »

corregir error de str_replace con UTF-8

Estas en el tema de corregir error de str_replace con UTF-8 en el foro de PHP en Foros del Web. Buenas... Tengo este codigo que recibe uan seri de parametro logicos para realizar una limpieza en html de acuerdo a lo seleccionado pero etngo un ...
  #1 (permalink)  
Antiguo 20/01/2011, 11:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 2 meses
Puntos: 0
Busqueda corregir error de str_replace con UTF-8

Buenas...
Tengo este codigo que recibe uan seri de parametro logicos para realizar una limpieza en html de acuerdo a lo seleccionado pero etngo un error que las entidades no me las convierte y me pone caracteres extranos alguien con una sugerencia para este problema.

Código PHP:
<?php 
$p
=$_POST['code'];
$alt=$_POST['alt'];
$boder=$_POST['border'];
$display_block=$_POST['displayblock'];
$summary=$_POST['summary'];
$height=$_POST['height'];
$doctype=$_POST['doctype'];
$metas=$_POST['metatags'];
$html_tag=$_POST['html'];
$body=$_POST['body'];
$links=$_POST['links'];
$comment=$_POST['comment'];
$strong=$_POST['strong'];
$em=$_POST['em'];
$gif_link=$_POST['giflink'];
$target=$_POST['target'];
$bullet=$_POST['bullet'];

if(
$alt==true){
$p=addAttributeToTagNoHas('img','alt','',$p);
}

if(
$border==true){
$p=addAttributeToTagNoHas('img','border','0',$p);
}

if(
$display_block==true){
$p=addAttributeToTagNoHas("img","style","display:block;",$p);
}

if(
$summary==true){
$p=addAttributeToTagNoHas('table','summary','',$p);
}

if(
$height==true){
$p=revomeAttributeToTag('table','height',$p);
}

if(
$doctype==true){
$ppreg_replace("/<!DOCTYPE\s*[^>]*\s*>/i",'',$p);
}

if(
$metas==true){
$ppreg_replace("/<meta[^>]+(http\-equiv|name)=\"([^\"]*)\"[^>]" "+content=\"([^\"]*)\"[^>]*>/i",''$p);
}

if(
$html_tag==true){
$ppreg_replace("/<html\s*[^>]*\s*>/i",'<html>',$p);
$ppreg_replace("/<HTML\s*[^>]*\s*>/i",'<html>',$p);
}

if(
$body==true){
$ppreg_replace("/<body\s*[^>]*\s*>/i","<body bgcolor=\"#ffffff\">",$p);
$ppreg_replace("/<BODY\s*[^>]*\s*>/i","<body bgcolor=\"#ffffff\">",$p);
}

if(
$links==true){
$ppreg_replace("/<link\s*[^>]*\s*>/i",'',$p);
}

if(
$comment==true) {
$p=preg_replace("/<!--(.*?)-->/i"""$p);
}

if (
$strong==true){
$p=str_replace('<strong','<b',$p);
$p=str_replace('strong>','b>',$p);
}

if (
$em==true){
$p=str_replace('em>','i>',$p);
$p=str_replace('<em','<i',$p);
}

if (
$gif_link==true){
$p=str_replace('</body>',"[!--$#GIF_LINK$--]\n</body>",$p);
}

if (
$target==true){
$p=addAttributeToTagNoHas('a','target','_blank',$p);
}

if (
$bullet==true) {
$p=str_replace('•','&bull;',$p);
}


function 
addAttributeToTagNoHas($tag,$attribute,$value,$html)
{
@
$dom = new DOMDocument();
@
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$imgs $xpath->evaluate("/html/body//".$tag);

for (
$i 0$i $imgs->length$i++) {
        
$img $imgs->item($i);
        
        if (
$img->hasAttribute($attribute) != true) {
        
$img->setAttribute($attribute$value);
        }
}
return 
$dom->saveHTML();
}

function 
revomeAttributeToTag($tag,$attribute,$html)
{
@
$dom = new DOMDocument();
@
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags $xpath->evaluate("/html/body//".$tag);

for (
$i 0$i $tags->length$i++) {
        
$tag $tags->item($i);
        
        if (
$tag->hasAttribute($attribute) == true) {
        
$tag->removeAttribute($attribute);
        }
}
return 
$dom->saveHTML();
}

$p=str_replace('/>','>',$p);
$p=str_replace(''',"'",$p);
$p=str_replace('’',"'",$p);
$p=str_replace('′',"'",$p);
$p=str_replace(' ','',$p);
$p=str_replace('–','&ndash;',$p);
$p=str_replace('—','&mdash;',$p);
$p=str_replace('†','&dagger;',$p);
$p=str_replace('™','&trade;',$p);
$p=str_replace(' ','&nbsp;',$p);
$p=str_replace('©','&copy;',$p);
$p=str_replace('®','&reg;',$p);
$p=str_replace('·','&middot;',$p);
$p=str_replace('http:///','http://',$p);
$p=str_replace('"ttp://','http://',$p);
$p=str_replace(' "','"',$p);
echo 
$p;
?>
  #2 (permalink)  
Antiguo 20/01/2011, 11:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: corregir error de str_replace con UTF-8

¿Como cuales? Pero te recomiendo que mires este http://www.forosdelweb.com/3497564-post2.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 20/01/2011, 12:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: corregir error de str_replace con UTF-8

Lo que suces es que cuando manda el html con caracteres especiales o entidades cualquiera ques ea els tr_replace al detectar quee s un UTF-8 a veces no lo hace bien pro ejemplo aggar un &bull; y lo reemplaza por caracteres extranos ese es el problema en sip

Etiquetas: corregir, utf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.