2010-04-24 4 views

Répondre

3

Une expression régulière qui pourrait être utilisée (volée sans vergogne du @anywhere javascript library mentionné dans une autre réponse) serait:

\B\@([a-zA-Z0-9_]{1,20}) 

Ceci recherche une limite non-mot (pour empêcher [email protected] [c.-à-d. emails] de matching) suivi de @, puis entre un et 20 caractères (inclus) dans cette classe de caractères. Bien sûr, le tout-sauf-espace route, comme dans d'autres réponses; cela dépend beaucoup des valeurs qui doivent être (dis) autorisées dans la partie label du @label.

Pour utiliser l'expression rationnelle en surbrillance dans PHP, quelque chose comme ce qui suit pourrait être utilisé pour remplacer une chaîne $subject.

$subject = 'Hello, @moustafa how are you today?'; 
echo preg_replace('/\B\@([a-zA-Z0-9_]{1,20})/', '<a href="user/$1">$0</a>', $subject); 

Les sorties au-dessus quelque chose comme:

Hello, <a href="user/moustafa">@moustafa</a> how are you today? 
3

Vous recherchez une expression régulière correspondant à @username, où le nom d'utilisateur n'a pas d'espace? Vous pouvez utiliser:

@[^ ]+ 

Si vous connaissez les caractères autorisés dans un nom d'utilisateur, vous pouvez être plus précis, comme si elles doivent être alphanumériques:

@[A-Za-z0-9]+ 
+0

pouvez-vous le câbler avec php –

0

Pourquoi ne pas utiliser le @anywhere javascript library que Twitter ont récemment libéré?

+0

qu'est-ce que cela signifie –

+0

C'est une bibliothèque javascript que vous exécutez sur la page Web pour faire des choses comme vous demandez. –

0

Les expressions régulières dans PHP sont juste des chaînes qui commencent et se terminent par le même caractère. Par convention ce caractère est/

vous pouvez donc utiliser quelque chose comme ceci comme argument à l'une des nombreuses fonctions d'expressions régulières php:

Pas d'espace:

"/[^ ]+/" 

Alphanumeric seulement:

"/[A-Za-z0-9]+/" 
Questions connexes