Foros del Web » Programando para Internet » PHP »

Extraer parte de una cadena con PHP

Estas en el tema de Extraer parte de una cadena con PHP en el foro de PHP en Foros del Web. Hola buenas, tengo una pequeña duda, a ver si me la pueden solucionar. Tengo en una variable una cadena de texto muy larga, y me ...
  #1 (permalink)  
Antiguo 14/12/2007, 09:47
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Extraer parte de una cadena con PHP

Hola buenas, tengo una pequeña duda, a ver si me la pueden solucionar. Tengo en una variable una cadena de texto muy larga, y me gustaría extraer una parte de ella. Pongo un ejemplo:
Código:
Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((
La cadena varía de longitud, pero siempre quisiera cojer de la cadena lo que hay desde #### hasta (((((, ambos incluidos, es decir en éste caso:
####numero_de_caracteres_indeterminado(((((
¿Alguién puede echarme una manita? Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 14/12/2007, 09:53
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: Extraer parte de una cadena con PHP

para extraerlo con PHP puedes usar

Código PHP:

 $texto 
'Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((';
substr($texto,0,10); 
Aqui solamente te mostrara 10 caracteres comenzando desde la letra C de el texto.
  #3 (permalink)  
Antiguo 14/12/2007, 10:15
Avatar de bluetorch  
Fecha de Ingreso: diciembre-2007
Mensajes: 26
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Extraer parte de una cadena con PHP

si tu texto fuera: Cadenalargasinespacios####numero_de_caracteres_ind eterminado(((((

para solo mostrar "####numero_de_caracteres_indeterminado((((("

sería asi:

Código PHP:
$texto 'Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((';
$maximo strlen($texto);
$cadena substr($texto,22,$maximo);
printf($cadena); 
ahora te mostraria "####numero_de_caracteres_indeterminado(((((" es un ejemplo para que veas como te muestra lo que vos queres.... vos adaptalo a lo que necesitas

saludos!! ...
  #4 (permalink)  
Antiguo 14/12/2007, 10:16
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Re: Extraer parte de una cadena con PHP

Vale, pero yo lo que quiero es que muestre siempre desde #### hasta (((((, independientemente del número de caracteres que haya antes, entre o despues...
Esa cadena es solo un ejemplo, simplemente quiero decir que en la cadena vendrá una url, por lo que siempre quiero cojerla. La url siempre empieza por http:// y termina por .html, pero no sé a ciencia cierta en que caracter comenzará y en que caracter terminará. ¿Alguién sabría explicarme?
  #5 (permalink)  
Antiguo 14/12/2007, 10:21
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Re: Extraer parte de una cadena con PHP

La cosa es que no puedo saber a partir de que caracter comenzar a contar, por lo que quisiera saber como ir recorriendo toda la cadena, de forma que cuando encontrara http:// comenzara a guardarlo en una variable y siguiera guardando hasta que pusiera .html
  #6 (permalink)  
Antiguo 14/12/2007, 11:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 98
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Extraer parte de una cadena con PHP

Muy buenas:

De una forma un poco bruta se podría ir leyendo carácter a carácter de la cadena hasta que llegue a ((((( y con un bucle while extraer en una variable la cadena desde ####.
Hay que tener en cuenta que este metodo necesitaria que siempre fueran 4# y 5( como tu has puesto y reconocerlos en el bucle ya que si alguno de estos carácteres estuviera en las partes que nos sobran daría lugar a error.

No se si me he explicado bien.
Saludos y espero que os sirva la idea, por supuesto mejorable.
  #7 (permalink)  
Antiguo 14/12/2007, 12:04
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Re: Extraer parte de una cadena con PHP

Sí, creo que te entiendo, siempre serían los mismo caracteres.
  #8 (permalink)  
Antiguo 15/12/2007, 04:59
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Re: Extraer parte de una cadena con PHP

¿Alguién podría ponerme el ejemplo? Se me da más bien mal PHP.
Saludos.
  #9 (permalink)  
Antiguo 15/12/2007, 07:10
 
Fecha de Ingreso: mayo-2007
Ubicación: Chile
Mensajes: 42
Antigüedad: 17 años
Puntos: 1
Mensaje Re: Extraer parte de una cadena con PHP

yournightmare86:

Creo que esto te podra ayudar, yo creo que es justo lo que andas buscando , ojala te sea de ayuda.

Código PHP:
<?php
$cadena
="cualqasdasduiercosahttp://www.forosdelweb.com/index.htmlterminando";
$maximostrlen ($cadena);
$ide"http://";
$ide2".html";
$totalstrpos($cadena,$ide);
$total2stripos($cadena,$ide2);
echo 
"Largo de la cadena: $maximo";
echo 
"<br>";
echo 
"Lo que sobra al inicio: $total";
echo 
"<br>";
$total3= ($maximo-$total2-5);
echo 
"Lo que sobra al final: $total3";
echo
"<br>";
$finalsubstr ($cadena,$total,-$total3);
echo 
"Esto es lo que queremos: $final";
?>
Aqui te dejo lo que imprimio en pantalla:

Largo de la cadena: 66
Lo que sobra al inicio: 19
Lo que sobra al final: 10
Esto es lo que queremos: http://www.forosdelweb.com/index.html


Trate de explicar lo que mas pude, ya que no para todos se nos hace facil php.

Saludos
  #10 (permalink)  
Antiguo 15/12/2007, 10:44
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 18 años
Puntos: 4
Re: Extraer parte de una cadena con PHP

Algo mas facil ge ge ge

Código PHP:
<?
$texto 
'Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((';
$salida strstr($texto,"####");
echo 
$salida;
?>
Cualquier duda no duden en decirmelo ok ;)
  #11 (permalink)  
Antiguo 15/12/2007, 11:33
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Extraer parte de una cadena con PHP

Yo tengo una funcion que uso siempre para hacer lo que tu deseas la llevo conigo hace ya años :P

Código PHP:
function sacar($TheStr$sLeft$sRight){
        
$pleft strpos($TheStr$sLeft0);
        if (
$pleft !== false){
                
$pright strpos($TheStr$sRight$pleft strlen($sLeft));
                If (
$pright !== false) {
                        return (
substr($TheStr$pleft strlen($sLeft), ($pright - ($pleft strlen($sLeft)))));
                }
        }
        return 
'';
}

$texto 'Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((';
echo 
sacar($texto,"####","(((((");
//imprimiria numero_de_caracteres_indeterminado 
  #12 (permalink)  
Antiguo 15/12/2007, 12:35
 
Fecha de Ingreso: mayo-2007
Ubicación: Chile
Mensajes: 42
Antigüedad: 17 años
Puntos: 1
De acuerdo Re: Extraer parte de una cadena con PHP

Cita:
Iniciado por dopon Ver Mensaje
Yo tengo una funcion que uso siempre para hacer lo que tu deseas la llevo conigo hace ya años :P

Código PHP:
function sacar($TheStr$sLeft$sRight){
        
$pleft strpos($TheStr$sLeft0);
        if (
$pleft !== false){
                
$pright strpos($TheStr$sRight$pleft strlen($sLeft));
                If (
$pright !== false) {
                        return (
substr($TheStr$pleft strlen($sLeft), ($pright - ($pleft strlen($sLeft)))));
                }
        }
        return 
'';
}

$texto 'Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((';
echo 
sacar($texto,"####","(((((");
//imprimiria numero_de_caracteres_indeterminado 
No entendi tu funcion man, podrias explicarla un poco por favor.

Saludos
  #13 (permalink)  
Antiguo 15/12/2007, 13:32
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Extraer parte de una cadena con PHP

$TheStr, -> La cadena
$sLeft
, -> El caracter o cadena delimitadora a la izquierda
$sRight ->
El caracter o cadena delimitadora a la derecha
  #14 (permalink)  
Antiguo 15/12/2007, 14:59
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 18 años
Puntos: 4
Re: Extraer parte de una cadena con PHP

ja mira esta es mejor:

Código PHP:
<?
function sacar($cad,$uno,$dos){
  
$sip strstr($cad,$uno);
  
$a = array($uno,$dos);
  
$b = array("","");
  
$salida ereg_replace($a,$b,$sip);
  return 
$salida;
}
$texto 'Cadenalargasinespacios####numero_de_caracteres_indeterminado((((('
echo 
sacar($texto,"####","((((("); 
?>
  #15 (permalink)  
Antiguo 15/12/2007, 16:54
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Extraer parte de una cadena con PHP

Tienes varias opciones:

Con explode():
Código PHP:
$texto "Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((";
 
$extraido explode("####",$texto,2);
$extraido explode("(((((",$extraido[1]);
$extraido $extraido[0];
 
echo 
$extraido//Imprime numero_de_caracteres_indeterminado 
Con preg_match():
Código PHP:
$texto "Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((";
 
preg_match("/([^\s]*)####(.*)\({5}/i"$texto$extraido);
 
print_r($extraido);
 
//echo $extraido[2]; 
...imprime:
Código:
Array
(
    [0] => Cadenalargasinespacios####numero_de_caracteres_indeterminado(((((
    [1] => Cadenalargasinespacios
    [2] => numero_de_caracteres_indeterminado
)
Un saludo,
  #16 (permalink)  
Antiguo 17/12/2007, 04:32
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Re: Extraer parte de una cadena con PHP

Madre mía, no eché un vistazo en todo el fin de semana y me encuentro ésto. Tengo para elegir, muchas gracias a todos por su ayuda. Con ésto tendré suficiente.
Gracias amigos y un saludo.
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 20:42.