2010-05-21 25 views
5

Esto es lo que estoy tratando de hacer uso de la (MediaWiki) API Wikipedia - http://en.wikipedia.org/w/api.phpExtraer párrafos de API Wikipedia usando PHP cURL

  1. hacer un GET en http://en.wikipedia.org/w/api.php?format=xml&action=opensearch&search=[keyword] para recuperar una lista de páginas sugeridas para la palabra clave página utilizando un GET

  2. Loop a través de cada sugirió en http://en.wikipedia.org/w/api.php?format=json&action=query&export&titles=[page title]

  3. extraer cualquier párrafos encontrar en la página en una matriz

  4. hacer algo con la matriz

estoy atascado en el # 3. Puedo ver un montón de datos JSON que incluyen "\ n \ n" entre párrafos, pero por alguna razón la función PHP explotar() no funciona.

Esencialmente solo quiero tomar la "carne" de cada página de Wikipedia (no títulos ni ningún formato, solo el contenido) y dividirla por párrafos en una matriz.

¿Alguna idea? ¡Gracias!

Respuesta

1

El \n\n son literalmente esos caracteres, no saltos de línea. Asegúrese de que utilizar comillas simples alrededor de la cadena en explotar:

$parts = explode('\n\n', $text); 

Si decide utilizar comillas dobles que tendrá que escapar de los personajes \ así:

$parts = explode("\\n\\n", $text); 

En una nota: ¿Por qué recuperas los datos en dos formatos diferentes? ¿Por qué no ir solo por JSON o solo XML?

+0

Impresionante - gracias! Estaba usando comillas dobles en lugar de comillas simples para la función de explosión(). Intenté usar XML para la consulta n. ° 2, pero todo el contenido de la página está dentro de un elemento XML, por lo que no ayuda a extraer los párrafos. Al menos con JSON hay '\ n \ n' entre párrafos. – Kane

+0

¿Entonces con XML había dos avances de línea en lugar del literal \ n \ n? En ese caso, debería ser capaz de cambiar a XML y ejecutar explode ("\ n \ n", $ text) con comillas dobles ;-) –

+0

No puedo decir si hay dos alimentaciones de línea en XML, solo veo una línea en blanco entre párrafos. Lamentablemente, el "\ n \ n" no pareció funcionar. ¡Gracias de todos modos! Debería estar bien con la mezcla XML/JSON. – Kane