2013-08-25 5 views
1

Je veux trouver la chaîne après "-" qui est exactement en 3ème position, Si elle ne trouve pas le "-", il devrait obtenir la chaîne entière. données d'échantillon sontObtenez une chaîne particulière en utilisant preg_match_all

TT-people // get people 
1V-NEWTET // get NEWTET 
ZZ-YESforTHE // get YESforTHE 
Computer // get Computer 
T-Book // get T-Book 

J'ai essayé comme

$result=preg_match_all("/^[a-zA-Z0-9]2-(\s\w*)/",$data,$networkID); 
echo $networkID[0][1] 

s'il vous plaît corriger mon erreur.

+0

Merci pour la réponse et une chose que j'ai oublié de mentionner que si le « - » est pas trouvé doit obtenir toute la chaîne – newcomer

Répondre

1
[a-zA-Z0-9]2 

Le 2 correspond ici simplement au caractère "2". On dirait que vous vouliez dire {2}.

Pour refléter votre question mise à jour, il devrait ressembler à ceci:

$result = preg_match_all('/^(?:[a-zA-Z0-9]{2}-)?(\s\w*)/', $data, $networkID); 
echo $networkID[0][1]; 

Le ? fait le groupe en option.

+0

Thsnks pour ta réponse. Je suis vraiment désolé de dire que j'ai manqué un point dans ma question. Maintenant j'ai édité ma question – newcomer

+0

@newcomer: Okay - voir edit. – Ryan

+0

J'essaie comme print_r ($ networkID); mais affiche un tableau vide. – newcomer

1

si son une seule ligne si le texte que vous pouvez faire:

if(substr($string, 2, 1) === "-"){ 
    echo substr($string, 3); 
}else{ 
    echo $string; 
} 
+0

Thsnks pour votre réponse. Je suis vraiment désolé de dire que j'ai manqué un point dans ma question. Maintenant j'ai édité ma question – newcomer

Questions connexes