Maison > Article > développement back-end > Explication détaillée de l'algorithme de correspondance de chaînes PHP
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 = '',$text = ''){ 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);
Résultat en cours :
Le premier indice de correspondance est 25
Recommandations associées :
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!