Heim  >  Artikel  >  Backend-Entwicklung  >  So schließen Sie eine bestimmte Zeichenfolge im regulären PHP-Ausdruck aus

So schließen Sie eine bestimmte Zeichenfolge im regulären PHP-Ausdruck aus

藏色散人
藏色散人Original
2020-11-20 09:42:133356Durchsuche

So verwenden Sie einen regulären PHP-Ausdruck, der keine bestimmte Zeichenfolge enthält: Erstellen Sie zunächst eine PHP-Beispieldatei. Verwenden Sie dann den regulären Ausdruck „preg_match(“/[^(abc)]/s“, $str, $arr);“ um festzustellen, ob Nur eine bestimmte Zeichenfolge enthalten ist.

So schließen Sie eine bestimmte Zeichenfolge im regulären PHP-Ausdruck aus

Empfohlen: „PHP-Video-Tutorial

Gemeinsame Funktionen strstr($str, „abc“);
Reguläres Matching preg_match(“/(abc)?/is“, $str); Wenn Sie jedoch eine Zeichenfolge abgleichen möchten, die keine bestimmte Zeichenfolge enthält, ist die Verwendung regulärer Ausdrücke schwieriger. Wenn Sie keine regulären Ausdrücke verwenden!strstr($str, „abc“);, können Sie das Problem lösen . Aber mit regulären Ausdrücken ist das alles eine andere Zeichenfolge, wie folgt:

1 . Allgemeine Funktionen

//------------------------------------------------ 
代码如下:
 <?php 
  $str = "dfadfadf765577abc55fd"; 
  $pattern_url = "/^((?!abc).)*$/is"; 
  if (preg_match($pattern_url, $str)){ 
  echo "不含有abc!"; 
  }else{ 
  echo "含有abc!"; 
  } 
  ?> 
 
 //------------------------------------------------ 
 结果为:false,含有abc! 
 $str = “2b3c4d5c”; 
 注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中, 
 preg_match(”/[^(abc)]/s”, $str, $arr); 
 其中字符 2 就不在 a b c 中,所以$arr返回值为2; 
 同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz” 
 “/(abc)[^((?!xyz).)*$]/s”

2. Reguläre Übereinstimmung

strstr($str, "abc");

Wenn Sie jedoch eine Zeichenfolge abgleichen möchten, die keine bestimmte Zeichenfolge enthält, ist die Verwendung regulärer Ausdrücke schwieriger. 1. Wenn Sie keine regulären Ausdrücke verwenden, können Sie das Problem wie folgt lösen

preg_match("/(abc)/is", $str);

2 Aber mit regulären Ausdrücken ist das alles

!strstr($str, "abc");

Vollständiges Codebeispiel

Der Code lautet wie folgt:

preg_match("/^((?!abc).)*$/is", $str);

Das Ergebnis ist: falsch, enthält abc!


Gleichzeitig den regulären Ausdruck abgleichen, der die Zeichenfolge „abc“ und nicht die Zeichenfolge „xyz“ enthält:

preg_match("/(abc)[^((?!xyz).)*$] /is" , $str);

Diese Methode ist effektiv. Ich verwende sie wie folgt:

$str = "dfadfadf765577abc55fd"; 
 $pattern_url = "/^((?!abc).)*$/is"; 
 if (preg_match($pattern_url, $str)) 
 { 
 echo "不含有abc!"; 
 } 
 else 
 { 
 echo "含有abc!"; 
 }

Aber am Ende stellte sich heraus, dass diese Methode äußerst ineffizient ist. Bei der Verarbeitung sehr kurzer Texte (es sind zehn erforderlich um mit dem gleichen Teil des regulären Ausdrucks übereinzustimmen) Ein paar Wörter oder höchstens Dutzende) Zeit kann in Betracht gezogen werden, aber wenn es zum Parsen eines großen Artikels verwendet wird oder wenn mehrere Übereinstimmungszeiten geändert werden müssen, sollte die Übereinstimmungszeit nicht berücksichtigt werden Erwägen Sie stattdessen die Verwendung anderer Methoden (z. B.: Analysieren Sie zuerst den abzugleichenden Absatz. Text mit regulären Ausdrücken und überprüfen Sie dann, ob ein bestimmter Text vorhanden ist.) Reguläre Ausdrücke sind keine sehr effektive Methode zum Abgleichen von Textfeldern, die keinen Text enthalten bestimmte Saiten.

Das obige ist der detaillierte Inhalt vonSo schließen Sie eine bestimmte Zeichenfolge im regulären PHP-Ausdruck aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn