Foros del Web » Programando para Internet » PHP »

PHP OO Preg_replace php

Estas en el tema de Preg_replace php en el foro de PHP en Foros del Web. Alguien sabe sobre php reg_replace o preg_match necesito ayuda en esto: Cita: $urlps2=preg_replace("/<a href=abc.php?id=(.+) style=color:#222244>(.+)<\/a>/", "<a href=id-$1.html>$2</a>", $partesx2); quiero que reemplaze la url anterior osea ...
  #1 (permalink)  
Antiguo 19/04/2011, 15:40
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Pregunta Preg_replace php

Alguien sabe sobre php reg_replace o preg_match necesito ayuda en esto:


Cita:
$urlps2=preg_replace("/<a href=abc.php?id=(.+) style=color:#222244>(.+)<\/a>/", "<a href=id-$1.html>$2</a>", $partesx2);
quiero que reemplaze la url anterior osea abc.php?id=1234 por id-1234.html
alguien sabe como lo podria hacer preg_match ? tampoco me sale

Cita:
$partesx1 = $urlpartes[1];
preg_match("/<a href=abc.php?id=(.+) style=color:#222244>(.+)<\/a>/",$partesx1,$urlps1);
alguien sabe
Gracias !

Última edición por rikardoz; 19/04/2011 a las 16:00
  #2 (permalink)  
Antiguo 19/04/2011, 18:11
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Exclamación Respuesta: Preg_replace php

Help me please ):
  #3 (permalink)  
Antiguo 19/04/2011, 18:49
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Preg_replace php

a lo mejor si pusieras que es lo que quieres transformar en que

si por ejemplo quieres que toda url como esta que pones

abc.php?id=1234

se transforme en que? esto?

abc/id-1234

o esto

abc.php?id-1234

o tal vez esto

abc.php-id-1234

digo no somos adivinos, además podría ser que el id no sean solo números y el numero de dígitos varie, lo quieres para un solo dominio etc. etc.
  #4 (permalink)  
Antiguo 19/04/2011, 18:57
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Preg_replace php

Si las ID son solo numeros
lo que yo quiero que este codigo por ejemplo:
Cita:
$urlps2=preg_replace("/<a href=abc.php?id=(.+) style=color:#222244>(.+)<\/a>/", "<a href=id-$1.html>$2</a>", $partesx2);
lo transforme en caso que tenga varias HTML de esta forma de una web X
Cita:
<a href=abc.php?id=123 style=color:#222244>Contenido 123</a>
<a href=abc.php?id=423 style=color:#222244>Contenido 423</a>
<a href=abc.php?id=354534 style=color:#222244>Contenido 354534</a>
<a href=abc.php?id=23423423423 style=color:#222244>Contenido 23423423423</a>
Y cambiarlo a esta forma que me imprima en html asi: ( borrando style del color y cambiar el formato html las urls)
Cita:
<a href="id-123.html">Contenido 123</a>
<a href="id-423.html">Contenido 423</a>
<a href="id-354534.html">Contenido 354534</a>
<a href="id-23423423423.html">Contenido 23423423423</a>
o otra forma de hacerlo str_replace? o preg_match_all ? como lo harias
  #5 (permalink)  
Antiguo 19/04/2011, 19:34
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Preg_replace php

por lo que pones se ve solo necesitas capturar el id la cuestion es la impresión
con esto deberia funcionar:

Código PHP:
Ver original
  1. <?php
  2. $source =
  3.     '<a href="abc.php?id=12345" style="color:#222244">Este es un link</a>
  4.     <a href="abc.php?id=12345" style="color:#222244">Este es un link</a>
  5.     <a href="abc.php?id=12345" style="color:#222244">Este es un link</a>';
  6. $parser = '|id=(.*?)" s|is';
  7. $coincidencias = '';
  8.  
  9. preg_match_all($parser, $source, $coincidencias);
  10. $result = count($coincidencias[1]);
  11. for($i=0; $i<$result; $i++)
  12. {
  13.     echo "<a href=id-".$coincidencias[1][$i].">contenido ".$coincidencias[1][$i]."</a>";
  14.     echo "<br/>";
  15. }
  16. ?>

puedes colocar cualquier clase de enlaces el chiste es que cumplan con lo de id= y las comillas dobles inclusive captura no númericos, si quieres solo númericos checa esta página para darte una idea con expresiones regulares.

http://www.mclibre.org/consultar/php...regulares.html
  #6 (permalink)  
Antiguo 19/04/2011, 19:41
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Preg_replace php

$parser = '|id=(.*?)" s|is';
que es lo que hace este codigo osea la parte de id= cualquier variable entiendo pero s|is?
que hace esa parte?
una pregunta tu crees que lo pueda poner solo un preg_match en caso que solo el codigo sea una linea ose solo un dato de
Cita:
$source = '<a href="abc.php?id=12345" style="color:#222244">Este es un link</a>';
P.D Gracias muchas Gracias, y si tienes skype para preguntarte mas rapido si no es mucha molestia (:
  #7 (permalink)  
Antiguo 19/04/2011, 19:51
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Preg_replace php

esta parte " s" es un espacio con una "s" lo que representa esta parte del enlace

<a href="abc.php?id=12345" style="color:#222244">Este es un link</a>

aunque deberia ser "" s" XD

y esto: "|is" es un delimitador ahora mismo no recuerdo que es pero me parece que tienen que ser minusculas o algo asi, generalmente no me

funciona si no lo pongo O_O¡¡¡

si el código es solo un dato o sea solo un enlace y hay solo una coincidencia te devolverá solo un enlace por eso el for.

Y no, no tengo skype lo siento.

para demostrar lo anterior prueba con un solo enlace ejemplo:

Código PHP:
<?php
$source 
'<a href="abc.php?id=12345" style="color:#222244">Este es un link</a>';
$parser '|id=(.*?)" s|is'
$coincidencias '';

preg_match_all($parser$source$coincidencias);
$result count($coincidencias[1]);
for(
$i=0$i<$result$i++)
{
    echo 
"<a href=id-".$coincidencias[1][$i].">contenido ".$coincidencias[1][$i]."</a>";
    echo 
"<br/>";
}
?>

Etiquetas: Ninguno
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 03:52.