PHP, wie man die Länge des Startteilstrings ermittelt, der nicht mit der Maske übereinstimmt

王林
Freigeben: 2024-03-19 12:06:02
nach vorne
498 Leute haben es durchsucht

Der PHP-Editor Banana zeigt Ihnen, wie Sie die Länge des Startteilstrings der nicht passenden Maske ermitteln. In PHP können Sie die Funktion preg_match in Kombination mit regulären Ausdrücken verwenden, um diese Funktion zu erreichen. Verwenden Sie zunächst einen regulären Ausdruck, um unerwünschte Zeichen abzugleichen, ermitteln Sie dann die Übereinstimmungsposition über die Funktion preg_match und berechnen Sie schließlich die Länge der Startteilzeichenfolge. Dies erleichtert die Implementierung der Funktion zum Abrufen der Anfangsteilzeichenfolgenlänge einer nicht übereinstimmenden Maske.

Frage: Wie erhalte ich die Länge des Startteilstrings der nicht passenden Maske in PHP

?

Lösung:

Verwenden Sie die Funktion preg_match(), die die Länge des Teilstrings zurückgibt, der dem regulären Ausdruck preg_match() 函数,它返回匹配正则表达式的子字符串的长度。通过使用否定前瞻断言 (?!) entspricht. Durch die Verwendung einer negativen Lookahead-Assertion (?!) können Sie Teilzeichenfolgen abgleichen, die nicht mit der angegebenen Maske übereinstimmen.

Codebeispiel:

$subject = "This is a test string";
$mask = "/(t.*)/";

$pattern = "/^(?:(?!$mask).)*$/";

preg_match($pattern, $subject, $matches);

$length = strlen($matches[0]);
Nach dem Login kopieren

Erklärung:

  • preg_match() 函数检查给定字符串 $subject 是否与正则表达式 $pattern Spiel.
  • $pattern Regulärer Ausdruck:
    • ^: Verankern Sie den Anfang der Zeichenfolge.
    • (?:...)*: Passen Sie null oder mehr Vorkommen eines beliebigen Zeichens an, das nicht mit dem Untermuster (...) übereinstimmt.
    • (?!$mask):否定前瞻断言,确保不匹配 $mask.
    • $: Verankern Sie das Ende der Schnur.
  • $matches Array $matches 数组包含匹配项,其中 $matches[0] mit Übereinstimmungen, wobei $matches[0] der Startteilstring der nicht übereinstimmenden Maske ist.
  • strlen($matches[0]) Gibt die Länge des Teilstrings zurück.

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass der Masken-Regex $mask gültig ist.
  • Negative Lookahead-Behauptungen sind weniger effizient und werden für längere Zeichenfolgen nicht empfohlen.
  • Erwägen Sie alternativ die Verwendung der Funktion strspn(), die die Anzahl der Zeichen zählt, bis das erste passende Zeichen gefunden wird.

Vollständiges Codebeispiel mit strspn():

$subject = "This is a test string";
$mask = "t";

$length = strspn($subject, $mask, 0, strlen($subject) - 1);
Nach dem Login kopieren

Vorteile:

  • strspn() Effizienter für lange Saiten.
  • Der Code ist prägnanter.

Nachteile:

  • Komplexe maskierende reguläre Ausdrücke werden nicht unterstützt.

Das obige ist der detaillierte Inhalt vonPHP, wie man die Länge des Startteilstrings ermittelt, der nicht mit der Maske übereinstimmt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:lsjlt.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage