Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des PHP-String-Matching-Algorithmus

Detaillierte Erläuterung des PHP-String-Matching-Algorithmus

小云云
小云云Original
2017-12-20 11:05:472792Durchsuche

Der Sunday-Algorithmus ist ein String-Pattern-Matching, das 1990 von Daniel M. Sunday vorgeschlagen wurde. Die Kernidee besteht darin, dass der Algorithmus während des Matching-Prozesses, wenn festgestellt wird, dass die Musterzeichenfolge nicht übereinstimmt, so viele Zeichen wie möglich für den nächsten Matching-Schritt überspringen kann, wodurch die Matching-Effizienz verbessert wird. Dieser Artikel stellt hauptsächlich den von PHP implementierten String-Matching-Algorithmus vor, beschreibt kurz das Konzept und Prinzip des Sunday-Algorithmus und analysiert anhand von Beispielen die damit verbundenen Fähigkeiten von PHP, String-Matching-Operationen zu implementieren Ich kann mich darauf beziehen. Ich hoffe, es kann jedem helfen.

<?php
/*
 *@param $pattern 模式串
 *@param $text 待匹配串
 */
function mySunday($pattern = &#39;&#39;,$text = &#39;&#39;){
  if(!$pattern || !$text) return false;
  $pattern_len = mb_strlen($pattern);
  $text_len = mb_strlen($text);
  if($pattern_len >= $text_len) return false;
  $i = 0;
  for($i = 0; $i < $pattern_len; $i++){ //组装以pattern中的字符为下标的数组
    $shift[$pattern[$i]] = $pattern_len - $i;
  }
  while($i <= $text_len - $pattern_len){
    $nums = 0;   //匹配上的字符个数
    while($pattern[$nums] == $text[$i + $nums]){
      $nums++;
      if($nums == $pattern_len){
        return "The first match index is $i\n";
      }
    }
    if($i + $pattern_len < $text_len && isset($shift[$text[$i + $pattern_len]])){ //判断模式串后一位字符是否在模式串中
      $i += $shift[$text[$i + $pattern_len]];   //对齐该字符
    }else{
      $i += $pattern_len;   //直接滑动pattern_len位
    }
  }
}
$text = "I am testing mySunday on sunday!";
$pattern = "sunday";
echo mySunday($pattern,$text);

Laufergebnis:

Der erste Übereinstimmungsindex ist 25
Verwandte Empfehlungen:

So implementieren Sie Stapeldatenstruktur und Klammern in PHP Detailliertes Codebeispiel für einen Matching-Algorithmus

Der einfachste String-Matching-Algorithmus in PHP, PHP-Matching-Algorithmus_PHP-Tutorial

Der einfachste PHP-Medium-String-Matching Algorithmus-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-String-Matching-Algorithmus. 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