2010-01-09 8 views
0

Les Twitter recherche renvoie api résultats dans ATOM/format XML qui ressemble à ceci:Comment extraire le nom d'utilisateur Twitter de l'API de recherche via PHP

<author> 
    <name>username (Friendly Name)</name> 
    <uri>http://twitter.com/username</uri> 
</author> 

Dans mon PHP je peux obtenir le champ de nom comme une variable, donc il ressemblerait à ceci:

$names = "username (Friendly Name)" 

Mais je veux utiliser PHP pour les extraire comme variables séparées, comme ceci:

$username = "username" 
$friendlyName = "Friendly Name" (without parantheses) 

TIA!

Répondre

1

Quelque chose comme ça devrait le faire, je suppose:

$names = "username (Friendly Name)"; 
if (preg_match('/^(.*?) \((.*)\)$/', $names, $m)) { 
    var_dump($m[1], $m[2]); 
} 

Et vous obtenez, dans ce cas:

string 'username' (length=8) 
string 'Friendly Name' (length=13) 

(Notez le "string", "length", et tout ce qui n'est que la sortie de var_dump, et non le contenu réel des variables)


En fait, l'expression rationnelle est correspondant:

  • Tout depuis le début de la chaîne à un espace
  • Alors, quoi que ce soit entre ()
  • Et ce sont les deux motifs de retour - car ils sont entre non -aplacé (); ce qui signifie qu'ils seront dans $m[1] et $m[2]
3

Une solution non-regex:

$names = 'username (Friendly Name)'; 
list($username, $friendlyName) = explode('(', $names); 
$username = trim($username); 
$friendlyName = trim($friendlyName, ')'); 

présumant que les parenthèses ne sont pas valables dans les deux nom.

Questions connexes