2012-03-27 2 views
0

Quelle est la meilleure façon de trouver @username dans une chaîne? Au début, j'explosais la chaîne basée sur @ trouvé, mais il semblait y avoir beaucoup de problèmes à travers chacune des instances. Puis-je utiliser regex pour trouver tous les @usernames dans une chaîne?Comment trouver @username dans une chaîne?

+3

Jetez un oeil à http://stackoverflow.com/questions/4424179/twitter-username-regex-validation – danielrsmith

Répondre

0

vous pouvez utiliser strpos() au lieu

pour les références http://php.net/manual/en/function.strpos.php

$pos = strpos($mystring, $findme); 
if ($pos === false) { 
echo "The string '$findme' was not found in the string '$mystring'"; 
} else { 
echo "The string '$findme' was found in the string '$mystring'"; 
echo " and exists at position $pos"; 
} 
3

Oui bien sûr. RegEx est la bonne façon de procéder:

if (preg_match_all('[email protected](.+)(?:\s|$)!U', $text, $matches)) 
    $usernames = $matches[1]; 
else 
    $usernames = array(); // empty list, no users matched 
+0

Hmm, bon travail. Mais si j'ai @ pearl-jam dans ma ficelle, il ne ramasse que de la perle. des idées? – Mike

+0

@Mike J'ai modifié l'expression rationnelle pour utiliser les espaces ('\ s') comme délimiteur au lieu de la limite de mot (' \ b'), car '-' est également une limite de mot dans regex. il devrait maintenant correspondre '@ pearl-jam', mais aussi' @foo (bar) ' – Kaii

Questions connexes