Foros del Web » Programando para Internet » PHP »

strpos o explode ?

Estas en el tema de strpos o explode ? en el foro de PHP en Foros del Web. Hola a todos, tengo una cadena en php y necesito cortar solo una parte de la cadena: cuando se trate de un campo concatenado, y ...
  #1 (permalink)  
Antiguo 15/11/2011, 14:34
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
strpos o explode ?

Hola a todos, tengo una cadena en php y necesito cortar solo una parte de la cadena: cuando se trate de un campo concatenado, y realmente no he podido hacerlo

la cadena es la siguiente (hasta el from):

Código PHP:
Ver original
  1. <?php
  2. $campos="SELECT A.SALCODIGO, A.SALNOMBRE,
  3. G.FECINIPROC, G.GPACODIGO,  G.FECFINPROC,
  4. RTRIM(C.GPANOMBRE)+' '+RTRIM(C.GPASEGNOM)+' '+RTRIM(C.GPAAPELLI)+' '+RTRIM(C.GPASEGAPE) AS PACIENTE,
  5. DATEDIFF(YEAR,C.GPAFECNAC,GETDATE())AS EDAD,
  6.  C.GPATELEF1 AS TELEFONO";
  7.  
  8. ?>

Y la parte que necesito cortar es:
RTRIM(C.GPANOMBRE)+' '+RTRIM(C.GPASEGNOM)+' '+RTRIM(C.GPAAPELLI)+' '+RTRIM(C.GPASEGAPE) AS PACIENTE

Se que con strpos puedo encontrar coincidencias de un caracter, pero aun no se si realmente me sirva......Por eso acudo al foro, me gustaria saber si usando strpos y despues haciendo un substr puedo cortar la cadena o si dentro de un explode puedo cortar la cadena.....Alguna idea me pueden dar ?.............

Agradezco la colaboración
  #2 (permalink)  
Antiguo 15/11/2011, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: strpos o explode ?

Si la cadena es fija, puedes usar str_replace para "quitar" esa parte de la cadena sin problema.

De ambas formas (usando strpos o explode) tendrías que parsear la cadena, creo str_replace es lo más rápido.

Saludos.
  #3 (permalink)  
Antiguo 15/11/2011, 15:15
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: strpos o explode ?

Ese es el inconveniente, la cadena nunca es fija...
He realizado lo siguiente:


Código PHP:
Ver original
  1. <?php
  2. $pmas=strpos($campos,"+",0); //Posicion del primer mas
  3.  echo $pmas."</br>"; //muestra 93
  4.  
  5. $cad1=substr($campos,$pmas,strlen($campos)); //cortando desde esa posicion hasta el //final de la cadena
  6. echo $cad1."</br>";
  7. //muestra:
  8. //+' '+RTRIM(C.GPASEGNOM)+' '+RTRIM(C.GPAAPELLI)+' '+RTRIM(C.GPASEGAPE) AS PACIENTE, DATEDIFF(YEAR,C.GPAFECNAC,GETDATE())AS EDAD, C.GPATELEF1 AS TELEFONO, D.AINCONSEC, E.ENTNOMBRE AS ENTIDAD, F.NOMCIRUGIA AS PROCEDIMIENTO, G.DATPROCE AS OBSERVACION, H.GMENOMBRE AS MEDICO, CASE G.PCAESTADO WHEN 'C' THEN 'CUMPLIDO' WHEN 'A' THEN 'CANCELADO' WHEN 'D' THEN 'ANULADO' ELSE 'PROGRAMADO' END AS ESTADOCIR, G.PSANUMERO
  9.  
  10. y finalmente:
  11. $cad2=substr($campos,$pmas,$pcoma);
  12. echo $cad2."</br>";
  13. //que muestra:
  14. //+' '+RTRIM(C.GPASEGNOM)+' '+RTRIM(C.GPAAPELLI)+' '+RTRIM(C.GPASEGAPE) AS PACIENTE
  15. ?>

Pero no se como recuperar totalmente la cadena, solo me faltaria volver a retomar la parte:
RTRIM(C.GPANOMBRE)

que esta antes del primer mas que se encuentra con strpos
Pienso que buscando la primera coma que hay hacia atras de la posicion del primer + podria cortarla, pero como lo podria hacer???

GRacias....
  #4 (permalink)  
Antiguo 15/11/2011, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: strpos o explode ?

Porque no obtienes la primera posición del primer RTRIM de ahí hasta la primera, y tienes ya la posición inicial y final, que puedes extraer usando substr.

Saludos.
  #5 (permalink)  
Antiguo 15/11/2011, 16:29
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: strpos o explode ?

Porque no todas las veces va RTRIM, puede o no ir, entonces por eso lo prefiero con la coma, que si debe ir.....
Pero opte por lo siguiente:
Código PHP:
Ver original
  1. <?php
  2.  $cad0=substr($campos,0,$pmas);
  3.  $char=",";
  4.  $i=strlen($cad0)-1;
  5.  $posult="";
  6. while($i>0)
  7.  {
  8.        if(trim($cad0[$i])==trim($char))
  9.          {
  10.              $posfin=$i;
  11.              $posult=$posult."@".$posfin;
  12.           }
  13.            $i--;
  14.        
  15. }
  16. //fuera del ciclo:
  17. echo "TODAS LAS POSICIONES-->".$posult."</br>";
  18.  
  19. ?>

de esta forma obtengo todas las posiciones de comas ( , ) en la primer cadena como un array...a partir de $posult[0], creo que puedo completar la cadena.....

Etiquetas: explode, strpos
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 04:43.