Explication détaillée de l'algorithme de correspondance de chaînes PHP

小云云
Libérer: 2023-03-18 06:18:01
original
2842 Les gens l'ont consulté

L'algorithme Sunday est une correspondance de modèles de chaînes proposée par Daniel M.Sunday en 1990. L'idée principale est la suivante : pendant le processus de correspondance, lorsque la chaîne de modèle s'avère sans correspondance, l'algorithme peut sauter autant de caractères que possible pour l'étape suivante de correspondance, améliorant ainsi l'efficacité de la correspondance. Cet article présente principalement l'algorithme de correspondance de chaînes implémenté par PHP, décrit brièvement le concept et le principe de l'algorithme du dimanche et analyse les compétences associées de PHP basées sur l'algorithme du dimanche pour mettre en œuvre des opérations de correspondance de chaînes sous forme d'exemples. je peux m'y référer. J'espère que cela pourra aider tout le monde.

<?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);
Copier après la connexion

Résultat en cours :

Le premier indice de correspondance est 25
Recommandations associées :

Comment implémenter la structure et les crochets des données de la pile en PHP Exemples de code détaillés d'algorithmes de correspondance

L'algorithme de correspondance de chaînes le plus simple en php, php matching algorithm_PHP tutoriel

La correspondance de chaînes moyennes php la plus simple Tutoriel d'algorithme

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal