Heim >Backend-Entwicklung >PHP-Tutorial >Beispiel eines in PHP implementierten String-Matching-Algorithmus

Beispiel eines in PHP implementierten String-Matching-Algorithmus

jacklove
jackloveOriginal
2018-07-05 17:48:181810Durchsuche

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 Bei Bedarf können Sie sich auf Weiter beziehen

Das Beispiel in diesem Artikel beschreibt den von PHP implementierten String-Matching-Algorithmus – den Sonntagsalgorithmus. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Der Sunday-Algorithmus ist ein String-Pattern-Matching, das 1990 von Daniel M. Sunday vorgeschlagen wurde. Die Kernidee ist: Wenn während des Abgleichvorgangs festgestellt wird, dass die Musterzeichenfolge nicht übereinstimmt, kann der Algorithmus so viele Zeichen wie möglich für den nächsten Abgleichschritt überspringen und so die Abgleicheffizienz verbessern.

<?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:

The first match index is 25

Artikel, die Sie interessieren könnten:

Beispielerklärung des in PHP implementierten Maximum-Forward-Matching-Algorithmus

Installation und Verwendung der PHP-Leistungsanalyse Tool xhprof Verwandte Hinweise

Erläuterung der Methode der PHP-Kapselung der DB-Klasse zur Verbindung mit der SQLite3-Datenbank

Das obige ist der detaillierte Inhalt vonBeispiel eines in PHP implementierten 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