This page has been robot translated, sorry for typos if any. Original content here.

Ein paar Beispiele für reguläre Ausdrücke

Nach Thema:


Ist die Zeichenfolge eine Zahl mit bis zu 77 Ziffern?

  if (ereg ("^ [0-9] {1.77} $", $ string)) echo "Ja";  sonst echo "nein"; 

Ob die Zeichenfolge nur aus Buchstaben, Zahlen und "_" besteht, eine Länge von 5 bis 20 Zeichen:

  if (ereg ("^ [a-za-y0-9 _] {5,20} $", $ string)) echo "ja";  sonst echo "nein"; 

Gibt es in der Zeichenfolge ein anderes Zeichen als erlaubt? Buchstaben, Ziffern und "_" gelten als gültig. Länge hier kann nicht überprüft werden, außer dass nur eine zusätzliche Bedingung strlen ($ string). Verwechseln Sie nicht das vorherige Beispiel - obwohl das Ergebnis das gleiche ist, aber die Methode ist anders, "durch Widerspruch"

  if (! ereg ("[^ a-za-y0-9 _]", $ string)) 
  echo "keine fremden Zeichen (OK)"; 
 sonst 
  echo "ist ein Fremdzeichen (FALSE)"; 

Verwenden Sie für einen Vergleich, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, ereg i ().

Gibt es aufeinanderfolgende Zeichen in der Zeichenfolge, nicht weniger als 3 Zeichen in einer Zeile (z. B. "abgGDDeYe", aber nicht "AABBAABB"):

  if (preg_match ("/ (.) \\ 1 \\ 1 /", $ Zeichenfolge)) echo "Ja";  sonst echo "nein"; 

Ersetze überall im Text LINE1 in LINE2 (die Aufgabe wird ohne reguläre Ausdrücke gelöst):

  $ string = str_replace ("LINE1", "LINE2", $ string); 

Ersetzen Sie die Kurven der Codes für den Übergang der Linie zu normal: Dazu müssen Sie nur "\ r" löschen.

Übergänge sind normal (aber unterschiedlich!): "\ N" oder "\ r \ n".

Immer noch gibt es Störungen, geben Sie "\ r \ r \ n" ein.

  $ string = str_replace ("\ r", "", $ string); 

Ersetzen Sie alle doppelten Leerzeichen durch eins. Versuchen Sie nicht, hier str_replace anzuwenden, das ist eine gute Funktion, aber nicht für dieses Beispiel.

  $ string = preg_replace ("/ XX + /", "X", $ string);  // setze ein Leerzeichen anstelle von X 

Im Text gibt es einige Wörter, sagen wir "WORT" und "LYALYAL" (usw.), die auf die gleiche Weise mit dem gleichen Ding, aber mit Zusätzen ersetzt werden sollten.

Vielleicht fehlen Wörter oder finden sich oft in irgendeinem Register.

Ie. Wenn es ein "Wort" oder "Wort" gab (oder sonstwie), müssen Sie es durch "<b> Wort </ b>" oder "<b> SLOUVO </ b>" (je nachdem, wie es war) ersetzen.

Mit anderen Worten, es ist notwendig, eine Liste von Wörtern in irgendeinem Register zu finden und feste Linien ("<b>" und "</ b>") entlang der Kanten der verschachtelten Wörter einzufügen.

  $ string = preg_replace ("/ (Wort1 | Wort2 | Halal | Wort99) / si", " \\ 1 ", $ Zeichenfolge); 

Suchen Sie den Text in einem Tag, zum Beispiel <TITLE> ... </ TITLE> aus einer HTML-Datei ( $ string - source text).

  if (preg_match ("!! si", $ string, $ ok))
  echo "Tag gefunden, Text: $ ok [1]";
 sonst
  echo "Tag nicht gefunden"; 

Suchen Sie den in einem Tag enthaltenen Text und ersetzen Sie ihn durch ein anderes Tag, zum Beispiel: <TITLE> ... </ TITLE> ersetzen Sie dasselbe in <MY_TEG> ... </ MY_TEG> in der HTML-Datei:

  preg_replace ("! ! si "," <MY_TEG> \\ 1 МОЙ_ТЕГ>  ", $ string); 

Hervorhebung von PHP-Code in Nachrichten

Zum Beispiel haben Sie ein Forum wie vBulletin, wo Sie den Code markieren können, wenn Sie es speziell markieren: [PHP] beliebigen Code [/ PHP] .

Am Ende, danach (beim Betrachten der Nachricht), erhalten Sie einen schönen und bunten PHP-Code.

Und wenn Sie also alle Teile zwischen [PHP] .. [/ PHP] und <? ..?> Als Code und farbig auffassen möchten, dann ist das ganz einfach möglich.

Text des Programms.

 <?

 // ursprüngliche Nachricht:
 // ------------------------------------------------ ------
 $ str = '
 Pamagite, funktioniert nicht!  Hier ist ein Beispiel:
 [php]
 // Kommentar
 # Kommentar
 phpinfo ();
 [/ php] 

 für ein Lyalal 

 [php]
 für ($ i = 0; $ i <100; $ i ++) {
 Ping ("- f", "www.ru");
 }
 [/ php]
 <? 
 echo "<a href=http://shram.kiev.ua/> hier klicken! </a>";
 phpinfo (); 
 ?>
 ';
 // ------------------------------------------------ ------

 // Warnungen unterdrücken (in highlight_string gibt es Störungen) 
 Fehlerbericht (0);

 // Funktion zum Hervorheben eines Stückes Text
 Funktion _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 (); 
  gib $ s zurück;
 }

 // Suche im Text nach allen Teilen zwischen <? ... oder [PHP] ...
 $ str = preg_replace ("! (\ [php \] | <\?) (. *?) (\ [/ php \] | \?>)! ise", "_ mein _ ('\\ 2', \ \ 1 ',' \\ 3 ') ", $ str);

 echo $ str;

 ?>

Nach einem solchen Programm zeigt der Bildschirm:

Pamagite, funktioniert nicht! Hier ist ein Beispiel: <?
// Kommentar
# Kommentar
phpinfo ();
?> für ein Lyalal <?
für ( $ i = 0 ; $ i < 100 ; $ i ++) {
ping ( "-f" , "www.ru" );
}
?> <?
echo "<a href=http://shram.kiev.ua/> hier klicken! </a>" ;
phpinfo ();
?>

Anscheinend wurde alles hervorgehoben, was zwischen den speziellen Zeilen lag, und der überflüssige Text änderte sich in keiner Weise. Wenn Sie sich für das Forum bewerben, denken Sie über den Übergang zu neuen Linien nach.

Wenn Sie die ganze Nachricht haben - es ist solider Code, dann verwenden Sie highlight_string direkt, ohne nach <? ..?> Im Code zu suchen ...

URL auf Richtigkeit überprüfen

Diese Funktion wird von der Quelle des Chats übernommen.

Unterstützt alles, was nur in der URL sein kann ...

Denken Sie daran, dass Sie nicht nur überprüfen, sondern auch einen neuen Wert annehmen sollten

von der Funktion, t. Sie fügt bei seiner Abwesenheit "http: //" an.

  // hinzufügen  Funktion zur Entfernung von gefährlichen Sivolen
 Funktion Pregtrim ($ str) {
  return preg_replace ("/ [^ \ x20- \ xFF] /", "", @ strval ($ str));
 }
 //
 // überprüfe die URL und gib zurück:
 // * +1, wenn die URL leer ist 
 // if (checkurl ($ url) == 1) echo "leer"
 // * -1, wenn die URL nicht leer ist, aber mit Fehlern
 // if (checkurl ($ url) == - 1) echo "Fehler"
 // * string (neue URL), wenn die URL gefunden und spärlich ist
 // if (checkurl ($ url) == 0) echo "alles ok"
 // oder if (strlen (checkurl ($ url))> 1) echo "alles ok"
 //
 // Wenn das Protokoll nicht in der URL enthalten war, wird es hinzugefügt ("http: //")
 //
 Funktion checkurl ($ url) {
  // Schneide linke Zeichen und nachfolgende Leerzeichen aus
  $ url = trimmen (pregtrim ($ url));
  // wenn leer - beenden
  if (strlen ($ url) == 0) gebe 1 zurück;
  // überprüfe die URL auf Korrektheit
  if (! preg_match ("~ ^ (? :( ?: https? | ftp | telnet): // (?: [a-z0-9_-] {1.32} ".
  "(? :: [a-z0-9 _-] {1.32})? @)?)? (? :( ?: [a-z0-9 -] {1.128} \.) + (?: com | net | ".
  "org | mil | edu | arpa | regieren | biz | info | aero | inc | name | [az] {2}) | (?! 0) (? :( ? ".
  "! 0 [^.] | 255) [0-9] {1,3} \.) {3} (?! 0 | 255) [0-9] {1,3}) (?: / [A -z0-9., _ @% & ".
  "? + = \ ~ / -] *)? (?: # [^ '\" & <>] *)? $ ~ i ", $ url, $ ok))
  Rückgabe -1;  // wenn nicht korrekt - beenden
  // wenn es kein Protokoll gibt - add
  if (! strstr ($ url, ": //")) $ url = "http: //". $ url;
  // Ersetzen Sie das Protokoll durch Kleinbuchstaben: hTtP -> http
  $ url = preg_replace ("~ ^ [az] + ~ ie", "strtolower ('\\ 0')", $ url);
  Rückgabe $ url;
 } 

Zur Überprüfung müssen Sie also Folgendes verwenden:

  $ url = checkurl ($ url);  // hat die URL selbst neu geschrieben
 if ($ url) beenden ("Ungültige URL"); 

Validierung der E-Mail

Überprüfen Sie die Richtigkeit der E-Mail - überprüfen Sie das gleiche wie im vorherigen Beispiel.

  //
 // überprüft die Seife und kehrt zurück
 // * +1, wenn die Soap leer ist
 // * -1, wenn nicht leer, aber mit einem Fehler
 // * string, wenn Seife richtig ist
 //

 Funktionscheckmail ($ mail) {
  // Schneide linke Zeichen und nachfolgende Leerzeichen aus
  $ mail = trimmen (pregtrim ($ mail));  // Funktion pregtrim () nehme das obige Beispiel
  // wenn leer - beenden
  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 | name | [az] {2}) | [0-9] {1,3} \. [0-9] {1,3} \. [0- ".
  "9] {1,3} \. [0-9] {1,3}) $ / ist", $ mail))
  Rückgabe -1;
  return $ mail;
 } 

Ausschneiden von URLs aus Text- und HTML-Kurven

Manchmal müssen Sie Links vom HTML-Text zu einer URL oder E-Mail ausschneiden.

Wenn Sie in HTML keinen gekrümmten Code haben, ist dies eine sehr einfache Aufgabe für einen regulären Ausdruck:

  ] + href = ([^>] +) [^>] *> (. *?) 

Aber Links sind anders ... Wie Sie Ihr Programm machen, liegt ganz bei Ihnen.

Sie können nur 100% der richtigen Links nehmen, aber dann werden einige Kurven nicht gesendet (obwohl sie auch wahr sind).

Sie können alles hintereinander nehmen, aber dann werden einige Links nicht absolut korrekt ausgeschnitten.

Text des Programms:

  <?
 $ str = "
 <a href=url1> name1 </a> 
 <a href=url2> name2 </a>
 <a href='url3'> name3 </a> 
 <a href=url4> <Klammern </ a> </a>
 <a href=\"url5\"> <b> fett </ b> </a> 
 <a href=url6> \ "Zitate \" </a>
 <a target=\"< Versuchen Sie, das Programm zu überlisten </a> hahaha \ "href = url7> 77777 </a>
 <a href=url8 target=\"<Ein Versuch, das Programm zu überlisten> hahaha \ "> 88888 </a>";
 echo "<pre> Quellcode:". htmlspecialchars ($ str). "</ pre>";
 echo "--------------- Option 1 ---------------";
 preg_match_all ("!  ] +) \ "?"?. *?> (. *?)! ist ", $ str, $ ok);
 für ($ i = 0; $ i  ". $ ok [1] [$ i]."  - ". $ ok [2] [$ i];
 }
 Echo " 
--------------- Option 2 --------------- "; preg_match_all ("! ] + href = \ "? '? ([^ \"'>] +) \ "? '? [^>] *> (. *?)! ist", $ str, $ ok); für ($ i = 0; $ i ". $ ok [1] [$ i]." - ". $ ok [2] [$ i]; } Echo "
--------------- Option 3 --------------- "; preg_match_all ("!
] + href = \ "? '? ([^ \"'>] +) \ "? '? [^>] *> ([^ <>] *?)! ist", $ str, $ ok); für ($ i = 0; $ i ". $ ok [1] [$ i]." - ". $ ok [2] [$ i]; } ?>

Beispielausgabe:

Quellcode:
<a href=url1> name1 </a>
<a href=url2> name2 </a>
<a href='url3'> name3 </a>
<a href=url4> <Klammern </ a> </a>
<a href="url5"> <b> fett </ b> </a>
<a href=url6> "Zitate" </a>
<a target="<Ein Versuch, das Programm zu überlisten> hahaha "href = url7> 77777 </a>
<a href=url8 target="<Ein Versuch, das Programm zu überlisten> hahaha >> 88888 </a>
---------------Variante 1---------------
  • URL1 - Name1
  • URL2 - Name2
  • url3 - name3
  • url4 - <Klammern>
  • url5 - fett
  • url6 - "Zitate"
  • url7 - 77777
  • url8 - hahaha "> 88888
    --------------- Option 2 ---------------
  • URL1 - Name1
  • URL2 - Name2
  • url3 - name3
  • url4 - <Klammern>
  • url5 - fett
  • url6 - "Zitate"
  • url8 - hahaha "> 88888
    --------------- Option 3 ---------------
  • URL1 - Name1
  • URL2 - Name2
  • url3 - name3
  • url6 - "Zitate"