Foros del Web » Programando para Internet » PHP »

Cortar cadena y volver a ponerle los tag de html

Estas en el tema de Cortar cadena y volver a ponerle los tag de html en el foro de PHP en Foros del Web. Hola gente remonto este tema la idea es tomar una cadena que contiene tag <Font> cortarla a una determinada medida y volver a colocarles los ...
  #1 (permalink)  
Antiguo 09/09/2006, 07:37
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Cortar cadena y volver a ponerle los tag de html

Hola gente remonto este tema la idea es tomar una cadena que contiene tag <Font> cortarla a una determinada medida y volver a colocarles los tag que correspondan
Hasta el momento tengo esto

Código PHP:
<?php
$frase_original 
"<FONT class=azul>esto es</FONT> una prueba <FONT class=azul>del 20</FONT>";
$caracterini   "/FONT";
$cortar=60;
$mi_cadena=strip_tags($frase_original);
if (
strlen($mi_cadena) > 20){
$mi_cadena=$frase_original;
for(
$i=0;$i<$cortar;$i++){
$posicion strpos($mi_cadena$caracterini,$i);
if (
$posicion==false) {
    echo 
"No se encontro '$caracterini' en la cadena '$mi_cadena'";
} else {
    echo 
"Se encontro '$caracterini' en la cadena '$mi_cadena'";
    echo 
" en la posicion $posicion";
}
$i=$posicion;
$posicion="";
}
}
?>
Con lo cual tomo la cadena, si es mas grande que el limite averiguo en que posicion se encuentra el tag.
Hasta aca todo bien el tema es que nose como reconstruir esa cadena volvieno a colocar los tag en el lugar correspondiente.
Se entiende?
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #2 (permalink)  
Antiguo 09/09/2006, 19:33
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 2
Claudio,

Lo que precisás realizar es mucho más sencillo de hacer con Expresiones Regulares.

Por ejemplo (código incompleto y sin probar!)

Código PHP:
$html '<font face="Verdana">Texto de Prueba</font>';
if(
preg_match("/(<font.*>)(.*)(</font>)/i"$html$resultados))
{
    print 
$resultados[1]; // La etiqueta FONT inicial
    
print substr($resultados[2],05); // Los primeros 5 caracteres de "Texto de Prueba"
    
print $resultados[3]; // La etiqueta FONT final

Podés encontrar más información respecto del tema en: http://ar.php.net/manual/es/ref.pcre.php

Saludos,
__________________
Joel A. Chornik
ELSERVER.COM - WebHosting Profesional
  #3 (permalink)  
Antiguo 17/02/2007, 09:16
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Cortar cadena y volver a ponerle los tag de html

Ok, desde ya muchas gracias por contestar pero no logro entender en tu ejemplo como puedo limitar la cantidad de caracteres.
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #4 (permalink)  
Antiguo 17/02/2007, 09:55
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Cortar cadena y volver a ponerle los tag de html

print substr($resultados[2],0, 5);

el 5 que hay es la cantidad de caracteres que van a ser cortados
  #5 (permalink)  
Antiguo 17/02/2007, 11:03
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Cortar cadena y volver a ponerle los tag de html

Si si pero me tira este error de codigo y no logro sacarlo

Warning: preg_match(): Unknown modifier 'f' in borrar4.php on line 15
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #6 (permalink)  
Antiguo 17/02/2007, 13:17
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Cortar cadena y volver a ponerle los tag de html

Casi lo logro
Despues de mucho buscar el error encontre la forma de hacerlo
Código PHP:
<?php
///////////////este funciona pero con un solo font.//////////
$html="";
$resultados=""
$html "<font class='rojo'>Texto de Prueba</font>"
if(
preg_match("/(<font.*>)(.*)(<\/.*\>)/i"$html$resultados)) { 
//if(preg_match("/(<font.*>)(.*)(</font>)/i", $html, $resultados))
    
print $resultados[1]; // La etiqueta FONT inicial 
    
print substr($resultados[2],010)."..."// Los primeros 5 caracteres de "Texto de Prueba" 
    
print $resultados[3]; // La etiqueta FONT final 
}
/////////////////////////////////////////////////////////////////////////
?>
El tema ahora es:
Suponiendo que en el texto de entrada en lugar de tener una sola etiqueta tenga mas de una este codigo solo me estaria mostrando la ultima encontrada, como tendria que hacer para poder contriolar la totalidad del texto .

Osea algo asi:

Código PHP:
$html "<font class='rojo'>Texto de Prueba</font><font class='azul'>segundo texto</font><font class='rojo'>tercer texto</font>"
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #7 (permalink)  
Antiguo 19/02/2007, 13:06
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: Cortar cadena y volver a ponerle los tag de html

A nadie se le ocurre como hacerlo?
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #8 (permalink)  
Antiguo 12/10/2007, 21:49
 
Fecha de Ingreso: julio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Cortar cadena y volver a ponerle los tag de html

se podra hacer con algun bbcode de algun foro, por ejemplo


[yt] para ver videos de youtube...

la idea es extraer la solo la direcion de un video posteado en un foro...
  #9 (permalink)  
Antiguo 12/10/2007, 21:57
 
Fecha de Ingreso: julio-2002
Mensajes: 14
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Cortar cadena y volver a ponerle los tag de html

ejemplo...

a mi no me funciona

Código PHP:
<?php
$cadena 
"[FLASH=425,350]http://www.youtube.com/v/dMH0bHeiRNg[/FLASH]";
$html="";
$resultados=""
$html $cadena
if(
preg_match("/([FLASH=.*])(.*)([\/.*\])/i"$html$resultados)) { 
    print 
$resultados[1]; // La etiqueta FONT inicial 
    
print substr($resultados[2],0); // Los primeros 5 caracteres de "Texto de Prueba" 
    
print $resultados[3]; // La etiqueta FONT final 
}
?>
gracias para los que me ayuden!!!
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 23:13.