Quelques exemples d'expressions régulières
Le numéro de la ligne jusqu'à 77 chiffres:
if (ereg ( "^ [0-9] {1,77} $", $ string)) echo "oui"; else echo "non";
Il se compose si une chaîne de lettres, des numéros, et "_" de longueur de 5 à 20 caractères:
if (ereg ( "^ [a-ZA-ya0-9 _] {5,20} $", $ string)) echo "oui"; else echo "non";
Y at-il une ligne dans un caractère autre que permis. Valides considérées comme des lettres, des chiffres et "_". La longueur ne peut pas être vérifié ici, il est juste une condition supplémentaire strlen ($ string). A ne pas confondre avec l'exemple précédent - et bien que le résultat est le même, mais la méthode est différente, "au contraire"
if (! ereg ( "[^ a-ZA-ya0-9 _]", $ string)) echo "pas de caractères étrangers (OK)"; autre echo "il y a des caractères étrangers (FALSE)";
Pour les comparaisons sont cas une utilisation indépendante ereg i ().
Y at-il une ligne de caractères consécutifs au moins 3 caractères consécutifs (tels que "abvgDDDeё", mais pas "aabbaabb"):
if (preg_match ( "/ () \\ 1 \\ 1 /.", $ string)) echo "oui"; else echo "non";
Remplacer tout le texte sur le character_expression2 string1 (le problème est résolu, sans expressions regegulyarnyh):
$ String = str_replace ( "STRING1", "STRING2", $ string);
Remplacer les courbes de ligne codes de transition à la normale: pour cela, vous devez seulement supprimer le "\ r".
Transitions sont normaux (mais différent!): "\ N" ou "\ r \ n".
Pourtant, il y a des pépins, comme "\ r \ r \ n".
$ String = str_replace ( "\ r", "", $ string);
Remplacer tous les espaces multiples en un seul. Ne pas essayer d'utiliser str_replace ici, cela est une bonne option, mais pour cet exemple.
$ String = preg_replace ( "/ XX + /", "X", $ string); // Au lieu de X comprennent un espace
Dans le texte il y a quelques mots, dire "mot" et "lyalyalya" (etc.) qui doivent être remplacés de la même manière à la même chose, mais avec des ajouts.
Peut-être que les mots sont manquants ou il y a beaucoup de temps dans tous les cas.
Ie s'il y avait un «mot» ou «mot» (ou autre chose), vous avez besoin de le remplacer sur le "<b> mot </ b>" ou "<b> mot </ b>" (recherche comme il a été).
En d'autres termes, vous devez trouver une liste de mots dans tous les cas, et insérer les bords des mots naylennyh ligne fixe (sur le "<b>" et "</ b>").
$ String = preg_replace ( "/ (mot1 | mot2 | lyalyalya | slovo99) / si", "\\ 1", $ string);
Recherche de texte dans une certaine étiquette, tels que <TITLE> ... </ TITLE> du fichier HTML ($ string - le code source).
if (preg_match ( "!(. *?) ! Si ", $ string, $ ok)) echo "tag est trouvé, le texte: $ ok [1]"; autre echo "tag not found";
Recherche de texte dans une certaine étiquette et le remplacer par une étiquette différente, par exemple: <TITLE> ... </ TITLE > remplacer de manière similaire à <MOY_TEG> ... </ MOY_TEG> dans le fichier HTML:
preg_replace ( "! ! Si "," <MOY_TEG> \\ 1 МОЙ_ТЕГ> ", $ String);
Code PHP soulignant dans les messages
Par exemple, vous avez un forum vBulletin Le type, où vous pouvez mettre en évidence le code si elle est d'allouer spécifiquement: [PHP] tout code [/ PHP].
En conséquence, après que (lors de l'affichage d'un message), est une belle et php-code couleur.
Et donc, si vous voulez que tous les morceaux entre le [PHP] .. [/ PHP] et <? ..?> Vu que le code et la couleur, il peut être fait assez facilement.
Le texte du programme.
<? // Message d'origine: // ------------------------------------------------ ------ $ Str = ' Pamagite, nichavo ne fonctionne pas! Voici un exemple: [Php] // commentaire # commentaire phpinfo (); [/ Php] lyalyalya lyalyalya [Php] for ($ i = 0; $ i <100; $ i ++) { ping ( "- f", "www.ru"); } [/ Php] <? echo "<a href=http://shram.kiev.ua/> cliquez ici </a>!"; phpinfo (); ?> '; // ------------------------------------------------ ------ // Supprimer l'avertissement (en highlight_string il y a des pépins) error_reporting (0); // Fonction soulignant un morceau de texte fonction _my _ ($ s, a1 $, $ a2) { if ($ a1 = "<?"!) {a1 $ = "<?"; $ A2 = ">?"; } $ S = str_replace ( "\\\" "," \ "", $ s); ob_start (); highlight_string ($ a1 $ s $ a2 ..); $ S = ob_get_contents (); (Ob_end_clean); return $ s; } // Rechercher tous les morceaux dans le texte entre le <? ... Ou [PHP] ... $ Str = preg_replace ( "(\ [php \] |! <?. \) (*) (\ [/ Php \] | ?? \>!) Ise", "_ ma _ ( '\\ 2', '\ \ 1 '' \\ 3 ') ", $ str); echo $ str; ?>
Après un tel programme sur l'écran est:
Pamagite, nichavo ne fonctionne pas! Voici un exemple: <?
// commentaire # commentaire phpinfo (); ?> Lyalyalya lyalyalya <? for ($ i = 0; $ i <100; $ i ++) { ping ( "-f", "www.ru "); } ?> <? echo "<a href=http://shram.kiev.ua/> cliquez ici </a>! "; phpinfo (); ?> |
Comme on le voit, tout ce qui était entre spets.strokami point culminant, et un étranger ne change pas le texte. Si vous allez utiliser pour le forum, puis réfléchir à la transition vers la nouvelle ligne.
Si vous avez tout le message - il est un code continue, l' utilisation highlight_string directement sans avoir à rechercher dans le code ... <..?>
Vérifiez l'URL à l'exactitude
Cette fonction est prise à partir de la source dans le chat.
Il prend en charge tout ce qui ne peut être que dans l'URL ...
Rappelez-vous que vous devez non seulement vérifier, mais acceptez également la nouvelle valeur
de la fonction, qui ajoute le «http: //» dans le cas de son absence.
// Ajouter. fonctionner pour éliminer la valeur de charset dangereux fonction pregtrim ($ str) { retour preg_replace ( "/ [^ \ x20- \ xFF] /", "", @ strval ($ str)); } // // Vérifiez l'URL et retourne: // * 1, si l'URL est vide // Si (checkurl ($ url) == 1) echo "vide" // -1 * Si l'URL est pas vide, mais avec des erreurs // Si (checkurl ($ url) == - 1) echo "erreur" // * String (nouvelle URL), si l'URL est trouvée et otparsen // Si (checkurl ($ url) == 0) echo "tout est OK" // Ou si (strlen (checkurl ($ url))> 1) echo "tout est OK" // // Si le protocole n'a pas été dans l'URL, il sera ajouté ( "http: //") // fonction checkurl ($ url) { // Couper des symboles et des espaces d'extrême gauche $ Url = trim (pregtrim ($ url)); // Si elle est vide - sortie if (strlen ($ url) == 0) return 1; // Vérifiez l'URL pour le bon if (! preg_match ( "~ ^ (??: Https | ftp | telnet): ?? // (: [A-z0-9_-] {1,32} ". "(? :: [A-z0-9 _-] {1,32})? @)?)? (?
?: [A-z0-9 -] {1128} \) + (: com | net | ".. "Org | mil | edu | arpa | gov | biz | info | aero | inc | nom | [az] {2}) | (0) (?!?
"?. ! "0 [^.] | 255) [0-9] {1,3} \) {3} (0 | 255) [0-9] {1,3}) (:?!. / [A? -z0-9., _ @% & ". "+ = \ ~ / -] *) (?: ?? # [^ '\" & <>] *) $ ~ I ", $ url, $ ok))? retourner -1; // Si pas droit - sortie // Si non protokala - Ajouter if (strstr ($ url ": //"!)) $ url = "http: //" $ url ;. // Remplacez le minuscule protocole: HTTP -> http $ Url = preg_replace ( "~ ^ [az] + ~ ie", "strtolower ( '\\ 0')", $ url); return $ url; }
Donc, pour tester la nécessité d'utiliser quelque chose comme ceci:
$ Url = checkurl ($ url); // Ecraser l'URL en moi if ($ url) exit ( "Wrong URL");
Vérification E-mail
Vérification E-mail - pour vérifier l'exemple précédent.
// // Vérifie savon et retourne // * +1 Si le savon est vide // * -1 Si non vide, mais avec une erreur // * Ligne si vrai savon // fonction checkmail ($ mail) { // Couper des symboles et des espaces d'extrême gauche $ Courrier = trim (pregtrim ($ mail)); // Fonction pregtrim () prend l'exemple ci-dessus, // Si elle est vide - sortie if (strlen ($ mail) == 0) return 1; if (preg_match ( "/ ^ [a-z0-9 _-] {1,20} @ (([a-z0-9 -] + \) + (com | net | org | mil |." !. "Edu | gov | arpa | info | biz | inc | nom | [az] {2}) | [0-9] {1,3} \ [0-9] {1,3} \ [0- .. ». "9] {1,3} \. [0-9] {1,3}) $ / est", $ mail)) retourner -1; return $ courrier; }
Couper l'URL à partir des courbes de texte et de fichiers HTML
Parfois, vous devez couper des références HTML-texte à l'URL ou par courriel.
Si vous êtes dans le code HTML ne connaît pas la courbe, il est une tâche très simple pour une expression régulière, tels que:
] + Href = ([^>] +) [^>] *> (. *?)
Mais les liens sont différents ... Comment faire votre programme, vous décidez.
liens corrects, mais des liens puis quelques courbes suivantes ne seront pas obtenir (bien que, eux aussi, à droite) peuvent ne prendre que 100%.
Vous pouvez prendre tout, mais alors certains liens ne sera pas coupé tout à fait correct.
Texte du programme:
<? $ Str = " <a href=url1> nom1 </a> <a href=url2> nom2 </a> <a href='url3'> nom3 </a> <a href=url4> <crochets> </a> <a href=\"url5\"> <b> gras </ b> </a> <a href=url6> \ "guillemets \" </a> <a target=\"<popytka déjouer programmu> hahaha \ "href = url7> 77777 </a> <a href=url8 target=\"<popytka déjouer programmu> hahaha \ "> 88888 </a>"; echo "<pre> Code Source:" htmlspecialchars ($ str) "</ pre>"; .. l'écho "--------------- --------------- Option 1"; preg_match_all ( "!] +) \ "??. '*> (*) Est?.?!", $ Str, $ ok); for ($ i = 0; $ i ". $ Ok [1] [$ i]." . - "Ok $ [2] [$ i]; } echo "
--------------- --------------- Version 2 "; preg_match_all ( "! ] + Href = \ " '( [^ \ ??">] +) \ "' [^>] *> (*.?) Est ??!", $ Str, $ ok); for ($ i = 0; $ i". $ Ok [1] [$ i]." . - "Ok $ [2] [$ i]; } echo "
--------------- --------------- Option 3 "; preg_match_all ( "! ] + Href = \ " '( [^ \ ??">] +) \ "' [^>] *> ([^ <>] *?) Est ??!", $ Str, $ ok); for ($ i = 0; $ i". $ Ok [1] [$ i]." . - "Ok $ [2] [$ i]; } ?>
Le résultat est un exemple d'exécution:
Code Source: <a href=url1> nom1 </a> <a href=url2> nom2 </a> <a href='url3'> nom3 </a> <a href=url4> <crochets> </a> <a href="url5"> <b> gras </ b> </a> <a href=url6> "cite" </a> <a target="<popytka déjouer programmu> hahaha "href = url7> 77777 </a> <a href=url8 target="<popytka déjouer programmu> hahaha "> 88888 </a> --------------- --------------- Option 1 --------------- --------------- Version 2 --------------- --------------- Option 3 |
Commentaires
Commentant, gardez à l' esprit que le contenu et le ton de vos messages peuvent blesser les sentiments des gens réels, montrer du respect et de la tolérance à ses interlocuteurs, même si vous ne partagez pas leur avis, votre comportement en termes de liberté d'expression et de l' anonymat offert par Internet, est en train de changer non seulement virtuel, mais dans le monde réel. Tous les commentaires sont cachés à l'index, le contrôle anti - spam.