Comment valider un nom D'utilisateur Twitter en utilisant Regex
j'ai utilisé le patron /[a-z0-9_]+/i
dans la fonction:
function validate_twitter($username) {
if (eregi('/[a-z0-9_]+/i', $username)) {
return true;
}
}
avec ceci, je teste si l'entrée est un nom d'utilisateur twitter VALIDE, mais j'ai des difficultés car il ne me donne pas un résultat valide.
quelqu'un Peut-il m'aider à trouver une solution.
6 réponses
Pour valider si une chaîne est valide poignée Twitter:
function validate_username($username)
{
return preg_match('/^[A-Za-z0-9_]{1,15}$/', $username);
}
Si vous essayez de faire correspondre @username
à l'intérieur d'une chaîne.
Par exemple: RT @username: lorem ipsum @cjoudrey etc...
utilisez ce qui suit:
$string = 'RT @username: lorem ipsum @cjoudrey etc...';
preg_match_all('/@([A-Za-z0-9_]{1,15})/', $string, $usernames);
print_r($usernames);
Vous pouvez utiliser ce dernier avec preg_replace_callback pour lier les noms d'utilisateurs dans une chaîne.
Edit: Twitter also open source bibliothèques de texte pour Java et Ruby pour la mise en correspondance des noms d'utilisateur, les balises de hachage, etc.. Vous pourriez probablement regarder dans le code et de trouver les modèles regex qu'ils utilisent.
Edit (2): Voici un PHP port de le Twitter de la Bibliothèque de Texte: https://github.com/mzsanford/twitter-text-php#readme
Ne pas utiliser /
ereg*
.
en fait, n'utilisez pas ereg*
si vous pouvez l'éviter. http://php.net/preg_match
modifier: Notez aussi que /[a-z0-9_]+/i
match spaces are invalid
et not-a-real-name
. Vous voudrez certainement /^[a-z0-9_]+$/i
.
S
je crois que vous êtes en utilisant le PCRE forme, dans ce cas, vous devriez être en utilisant le preg_match fonction à la place.
eregi()
ne pas attendre tout /
ou des toggles supplémentaires. Suffit d'utiliser eregi('[a-z0-9_]+')
votre expression régulière est valide, bien qu'elle permette des espaces FYI. (Si vous voulez tester les expressions régulières, je recommande: http://rubular.com/).
Le premier problème ici est votre emploi de eregi
qui est dépréciée à partir de PHP 5.3. Il est recommandé que vous utilisez preg_match
au lieu de cela, il a la même syntaxe. Essayez ça et voyez si ça aide.
Documentation PHP pour preg_match: http://www.php.net/manual/en/function.preg-match.php Documentation PHP pour eregi:http://php.net/manual/en/function.eregi.php
les noms D'utilisateurs de Twitter ont de 1 à 15 caractères... donc, cela pourrait être encore mieux avec /^[a-z0-9_]{1,15}$/i
.