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 implémenter des opérations de correspondance de chaînes sous forme d'exemples. dans le besoin peuvent se référer à Suivant
L'exemple de cet article décrit l'algorithme de correspondance de chaînes implémenté par l'algorithme PHP——Sunday. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
L'algorithme du dimanche 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.
<?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ésultats en cours :
The first match index is 25
Un exemple de l'algorithme de correspondance maximale implémenté en PHP
Outil d'analyse des performances PHP xhprof Installation, utilisation et précautions associées
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!