Foros del Web » Programando para Internet » PHP »

String a arreglo

Estas en el tema de String a arreglo en el foro de PHP en Foros del Web. estimados, muy buenos dias, luego de pelear mucho para conectarme desde php a un servicio web .net (solucionado) ahora tengo un problema, espero me puedan ...
  #1 (permalink)  
Antiguo 18/06/2010, 07:54
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 18 años, 3 meses
Puntos: 2
String a arreglo

estimados, muy buenos dias, luego de pelear mucho para conectarme desde php a un servicio web .net (solucionado) ahora tengo un problema, espero me puedan ayudar, este servicio me devuelve el siguiente String


<NewDataSet> <Table> <actor_id>71</actor_id> <Nombre>ADAM GRANT</Nombre> </Table> <Table> <actor_id>132</actor_id> <Nombre>ADAM HOPPER</Nombre> </Table> <Table> <actor_id>165</actor_id> <Nombre>AL GARLAND</Nombre> </Table> <Table> <actor_id>173</actor_id> <Nombre>ALAN DREYFUSS</Nombre> </Table></NewDataSet>

yo necesito tomarlo y separarlo en una especie de estructura o tal vez de XML para que me tome cada
<Table> como un registro
<actor_id> Campo
<Nombre> Campo


espero me puedan ayudar, de antemano muchas gracias.
  #2 (permalink)  
Antiguo 18/06/2010, 07:59
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: String a arreglo

:O en realidad no se entiende mucho el resultado que quieres lograr
pero te recomiendo te des una vuelta por el manual de php .. y la funcion
preg_split con la cual puedes lograr eso, o tambien la funcion preg_match_all

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 18/06/2010, 08:03
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, 5 meses
Puntos: 1517
Respuesta: String a arreglo

Puedes usar SimpleXML o DOM. Si quieres también puedes ver este aporte para que lo puedas lograr. Y para organizarlo, si eso es lo que quieres puedes usar la librería tidy.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 18/06/2010, 08:13
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: String a arreglo

jajaja siempre enredado yo para explicar a ver... veamos tengo este String devuelto por un webservices

<NewDataSet> <Table> <actor_id>71</actor_id> <Nombre>ADAM GRANT</Nombre> </Table> <Table> <actor_id>132</actor_id> <Nombre>ADAM HOPPER</Nombre> </Table> <Table> <actor_id>165</actor_id> <Nombre>AL GARLAND</Nombre> </Table> <Table> <actor_id>173</actor_id> <Nombre>ALAN DREYFUSS</Nombre> </Table></NewDataSet>

lo que yo necesito hacer con el es cargar un Combo
con el valor de los datos <actor_id>
y el texto de <Nombre>

se entiende?

mejor graficamente... con eso debo crear el siguiente combo

<SELECT NAME="Actores">
<OPTION VALUE="0">Seleccione Actor</OPTION>
<OPTION VALUE="71">ADAM GRANT</OPTION>
<OPTION VALUE="132">ADAM HOPPER</OPTION>
<OPTION VALUE="165">AL GARLAND</OPTION>
<OPTION VALUE="173">ALAN DREYFUSS</OPTION>
</SELECT>


espero que ahora si quede mas claro xD
  #5 (permalink)  
Antiguo 18/06/2010, 08:14
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, 5 meses
Puntos: 1517
Respuesta: String a arreglo

Usa lo que te indiqué.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 18/06/2010, 08:22
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: String a arreglo

@abimaelrc con esa libreria como seria?
con preg_match_all seria algo como

Código PHP:
Ver original
  1. $string = "<NewDataSet> <Table> <actor_id>71</actor_id> <Nombre>ADAM GRANT</Nombre> </Table> <Table> <actor_id>132</actor_id> <Nombre>ADAM HOPPER</Nombre> </Table> <Table> <actor_id>165</actor_id> <Nombre>AL GARLAND</Nombre> </Table> <Table> <actor_id>173</actor_id> <Nombre>ALAN DREYFUSS</Nombre> </Table></NewDataSet>";
  2. preg_match_all('/.*?<actor_id>(.*?)<\/actor_id>.*?<Nombre>(.*?)<\/Nombre>/', $string, $matches);
  3. echo "<select name='actores'>";
  4. foreach($matches[1] as $key => $value){
  5.     echo "<option value='$value'>{$matches[2][$key]}</option>";
  6. }
  7. echo "</select>";

te agradeceria un ejemplo para ver esas librerias en funcionamiento *o*

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 18/06/2010, 08:49
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: String a arreglo

este es el codigo que me muestra al ver el codigo fuente de la pagina (por cierto esta acotado ya que son cerca de 300 actores que tiene la tabla

Array
(
[RecuperaActoresResult] => <NewDataSet>
<Table>
<actor_id>71</actor_id>
<Nombre>ADAM GRANT</Nombre>
</Table>
<Table>
<actor_id>132</actor_id>
<Nombre>ADAM HOPPER</Nombre>
</Table>
<Table>
<actor_id>165</actor_id>
<Nombre>AL GARLAND</Nombre>
</Table>
<Table>
<actor_id>173</actor_id>
<Nombre>ALAN DREYFUSS</Nombre>
</Table>
</NewDataSet>
)
  #8 (permalink)  
Antiguo 18/06/2010, 08:53
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: String a arreglo


probaste lo que postee? .. esta la tarea hecha.. copiar y pegar
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 18/06/2010, 08:57
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: String a arreglo

si lo prove, y esto me sale (jajajaj no me reten pos si estoy tratando de entender)
Warning: preg_match_all() expects parameter 2 to be string, array given in

y el codigo que uso es este (por si acazo)

$respuesta = $oSoapClient->call("RecuperaActores");
preg_match_all('/.*?<actor_id>(.*?)<\/actor_id>.*?<Nombre>(.*?)<\/Nombre>/', $respuesta, $matches);
echo "<select name='actores'>";
foreach($matches[1] as $key => $value){
echo "<option value='$value'>{$matches[2][$key]}</option>";
}
echo "</select>";
  #10 (permalink)  
Antiguo 18/06/2010, 09:00
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: String a arreglo

Código PHP:
Ver original
  1. $respuesta = $oSoapClient->call("RecuperaActores");

si haces un var_dump de $respuesta.. que te sale ?

Código PHP:
Ver original
  1. var_dump($respuesta);

el error te dice que debe ser un string el parametro 2
__________________
More about me...
~ @rhyudek1
~ Github
  #11 (permalink)  
Antiguo 18/06/2010, 09:01
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, 5 meses
Puntos: 1517
Respuesta: String a arreglo

La librería que me refiero es a SimpleXML o DOM. La de tidy es más bien para organizar los elementos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 18/06/2010, 09:04
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: String a arreglo

en fin despues de muchas vueltas lo que me resulto fue lo siguiente xD muchas gracias a ambos por su ayuda

$respuesta = $oSoapClient->call("RecuperaActores");

$xml = new SimpleXMLElement($respuesta["RecuperaActoresResult"]);
echo "<select name='actores'>";
foreach($xml->children() as $segunda_gen){
echo "<option value='".$segunda_gen->actor_id."'>".$segunda_gen->Nombre."</option>";
}
echo "</select>";

Hidek1 al hacer el var_dump era un keso que no entendia muy bien, pero de tanto probar y ver resultados al hacerlo como mostre arriba me funco perfectamente ;)

Etiquetas: string, arreglos
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 22:31.