Foros del Web » Programando para Internet » PHP »

dos puntos en linea sin error

Estas en el tema de dos puntos en linea sin error en el foro de PHP en Foros del Web. Hola a todos, de antemano gracias y espero me puedan ayudar: alguien sabe como insertar ":" dos puntos y me lo haga valido? estoy intentando ...
  #1 (permalink)  
Antiguo 03/02/2010, 19:26
Hecto_o_c
Invitado
 
Mensajes: n/a
Puntos:
dos puntos en linea sin error

Hola a todos, de antemano gracias y espero me puedan ayudar: alguien sabe como insertar ":" dos puntos y me lo haga valido?

estoy intentando leer un feed y lo hago utilizando un foreach:

Código PHP:
foreach ($data->channel->item-> as $item) { 
echo 
"<a href='$item->link'>$item->title</a>\n";
echo 
"<p>$item->description</p>\n"
para ser mas especificos es un feed de youtube y este utilisa ":" en las etiquetas de su estructura:

Código PHP:
<item>
     <
media:group>
          <
media:title>
          <
media:link>
          <
media:description>
     </
media:group>
</
item
pero al poner mi en mi codigo:

Código PHP:
foreach ($data->channel->item-> as $item) { 
echo 
"<a href='$item->media:group->media:link'>$item->media:group->media:title</a>\n";
echo 
"<p>$item->media:group->media:description</p>\n"
pero los dos puntos me marcan error, alguna solucion?
  #2 (permalink)  
Antiguo 03/02/2010, 20:18
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 10 años
Puntos: 36
Respuesta: dos puntos en linea sin error

No son "dos puntos", son namespaces de XML, tienen su propósito.

El propio fedd debería definir el namespace. Al principio debería tener algo como:
Código XML:
Ver original
  1. <?xml version="1.0" ?>
  2. <feed
  3.    xmlns:media='http://una/url/'>
  4. <!-- ... -->
  5. </feed>

Ahí te estará definiendo el valor para el namespace media. Podrás acceder a los elementos que lo contienen utilizando el método children()

Algo como:
Código PHP:
Ver original
  1. foreach ($data->channel->item-> as $item) {
  2.     $media = $item->children('http://una/url/');
  3.     echo $media->group->title . "\n"; // Igual se puede recorrer con otro foreach()
  4.     echo $media->group->link . "\n";
  5.     // etc ...
  6. }

No he trabajado con Youtube como para saber el esquema exácto del feed, pero la idea es esa.
www.php.net/simplexmlelement.children

Si tienes problema, deberías colocar más código.
__________________
I ♥ The Music!

Última edición por maturano; 04/02/2010 a las 13:32 Razón: CorriJo acceso a elementos
  #3 (permalink)  
Antiguo 03/02/2010, 20:36
Hecto_o_c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: dos puntos en linea sin error

Mira, esta es la estructura de Youtube...solo deje un ítem pues con el XML que estoy trabajando es muy largo, mientras haré unas pruebas con o que sugeriste.

Código HTML:
<?xml version='1.0' encoding='UTF-8'?>
<rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007' version='2.0'>
<channel>
	<description></description>
	<atom:id>tag:youtube.com,2008:user:ConcienciaCivicaJal:uploads</atom:id>
	<lastBuildDate>Thu, 04 Feb 2010 00:06:03 +0000</lastBuildDate>
	<category domain='http://schemas.google.com/g/2005#kind'>http://gdata.youtube.com/schemas/2007#video</category>
	<title>Uploads by ConcienciaCivicaJal</title><image><url>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</url>
	<title>Uploads by ConcienciaCivicaJal</title><link>http://www.youtube.com/profile_videos?user=ConcienciaCivicaJal</link></image>
	<link>http://www.youtube.com/profile_videos?user=ConcienciaCivicaJal</link>
	<managingEditor>ConcienciaCivicaJal</managingEditor>
	<generator>YouTube data API</generator>
	<openSearch:totalResults>54</openSearch:totalResults>
	<openSearch:startIndex>1</openSearch:startIndex>
	<openSearch:itemsPerPage>25</openSearch:itemsPerPage>	
<item>
	<guid isPermaLink='false'>tag:youtube.com,2008:video:w14gfgb-ax4</guid>
	<pubDate>Mon, 01 Feb 2010 01:56:05 +0000</pubDate>
	<atom:updated>2010-02-02T16:42:23.000Z</atom:updated>
	<category domain='http://schemas.google.com/g/2005#kind'>http://gdata.youtube.com/schemas/2007#video</category>
	<category domain='http://gdata.youtube.com/schemas/2007/categories.cat'>News</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Conciencia Civica</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Prensa</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Jalisco</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Salvador Cosío</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Gaona</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Politica</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Conciencia</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Civica</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Manuel Castelazo</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Manuel Estrada</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Parlamento de Colonias</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Salvador Caro</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>Villas panamericanas</category>
	<category domain='http://gdata.youtube.com/schemas/2007/keywords.cat'>El Bajio del Arenal</category>
	<title>Salvador Caro se compromete a ayudar</title>
	<link>http://www.youtube.com/watch?v=w14gfgb-ax4&amp;feature=youtube_gdata</link>
	<author>ConcienciaCivicaJal</author>
	<gd:comments><gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/w14gfgb-ax4/comments?v=2' countHint='0'/></gd:comments>
	<media:group>
		<media:category label='Noticias y política' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>News</media:category>
		<media:content url='http://www.youtube.com/v/w14gfgb-ax4?f=user_uploads&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='318' yt:format='5'/>
		<media:content url='rtsp://v1.cache7.c.youtube.com/CigLENy73wIaHwkea_4GfiBewxMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='318' yt:format='1'/>
		<media:content url='rtsp://v4.cache7.c.youtube.com/CigLENy73wIaHwkea_4GfiBewxMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='318' yt:format='6'/>
		<media:credit role='uploader' scheme='urn:youtube'>ConcienciaCivicaJal</media:credit>
		<media:description type='plain'>Salvador Caro se compromete a ayudar y llevar el asunto al congreso para analizarlo mas a fondo.</media:description>
		<media:keywords>Conciencia Civica, Prensa, Jalisco, Salvador Cosío, Gaona, Politica, Conciencia, Civica, Manuel Castelazo, Manuel Estrada, Parlamento de Colonias, Salvador Caro, Villas panamericanas, El Bajio del Arenal</media:keywords>
		<media:player url='http://www.youtube.com/watch?v=w14gfgb-ax4&amp;feature=youtube_gdata'/>
		<media:thumbnail url='http://i.ytimg.com/vi/w14gfgb-ax4/default.jpg' height='90' width='120' time='00:02:39'/>
		<media:thumbnail url='http://i.ytimg.com/vi/w14gfgb-ax4/2.jpg' height='90' width='120' time='00:02:39'/>
		<media:thumbnail url='http://i.ytimg.com/vi/w14gfgb-ax4/1.jpg' height='90' width='120' time='00:01:19.500'/>
		<media:thumbnail url='http://i.ytimg.com/vi/w14gfgb-ax4/3.jpg' height='90' width='120' time='00:03:58.500'/>
		<media:thumbnail url='http://i.ytimg.com/vi/w14gfgb-ax4/hqdefault.jpg' height='360' width='480'/>
		<media:title type='plain'>Salvador Caro se compromete a ayudar</media:title>
		<yt:duration seconds='318'/>
		<yt:uploaded>2010-02-01T01:56:05.000Z</yt:uploaded>
		<yt:videoid>w14gfgb-ax4</yt:videoid>
	</media:group>
	<yt:statistics favoriteCount='0' viewCount='7'/>
</item>
</channel>
</rss> 
  #4 (permalink)  
Antiguo 03/02/2010, 21:07
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 10 años
Puntos: 36
Respuesta: dos puntos en linea sin error

no veo que esté como lo colocaste, pero ahí puedes ver cómo se define el namespace para media: "http://search.yahoo.com/mrss/", entonces, puedes hacer:
Código PHP:
Ver original
  1. foreach ($xml->channel->item as $item) {
  2.     $media = $item->children('http://search.yahoo.com/mrss/');
  3.     foreach ($media->group as $element) {
  4.         echo "Categoría: " . $element->category . "<br />";
  5.         echo "Descripcion: " . $element->description . "<br />";
  6.         $thumbnail = $element->thumbnail[0]->attributes();
  7.         echo "Captura: <img src='" . $thumbnail['url'] . "' /><br />";
  8.     }
  9. }

... por ejemplo (código no probado). Es un XML un tanto complejo, pero su lectura debe ser simple. Todo lo tienes en la documentación de PHP.
www.php.net/simplexml

Además, dudo mucho seas el único que haya querido leer un feed de Youtube. Seguramente hay código de sobra en google.

Si tienes problemas, coméntalos.
__________________
I ♥ The Music!
  #5 (permalink)  
Antiguo 03/02/2010, 21:40
Hecto_o_c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: dos puntos en linea sin error

No se por que dices que no esta como lo coloque, básicamente es lo mismo...solo simplifique lo que me interesaba sin que perdiera contexto.

Eh logrado simplificarlo, si es que se le puede llamar asi:

Código PHP:
foreach ($xml->item as $item) {
$media $item->children('http://search.yahoo.com/mrss/');
    echo 
$media->group->title "\n"//
    
echo $media->group->description "\n";
    echo 
$media->group->player['url'] . "\n";
    

Aunque supongo es lo mismo sin tanto "Foreach", sobre Google... estube buscando y no encontre nada asi que me di a la tarea de hacerlo yo mismo y bueno que puedo decir mas que Gracias maturano !!!
  #6 (permalink)  
Antiguo 04/02/2010, 13:56
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 10 años
Puntos: 36
Respuesta: dos puntos en linea sin error

Cita:
Iniciado por Hecto_o_c Ver Mensaje
No se por que dices que no esta como lo coloque, básicamente es lo mismo...
Era un comentario. Que no vi los mismos elementos ni que fuera tan simple .



Cita:
Iniciado por Hecto_o_c Ver Mensaje
Aunque supongo es lo mismo sin tanto "Foreach"
Así es. De la misma manera que lo hice en mi primer mensaje. En este segundo ejemplo utilicé foreach() porque en mi primer mensaje mencioné igual se podía, entonces, para mostrarlo de las dos maneras.

Que bueno que te sirvió .
__________________
I ♥ The Music!

Etiquetas: namespace, xml
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 19:36.