字符串之模式匹配
PHP代码
<?php /** * @description: 获取模式串在主字符串中的所有首字母出现索引位置(递归版) * @author: cutefrog(injection.mail@gmail.com) * @parameter: $mainstr 主字符串(必要参数) * @parameter: $modestr 模式串(必要参数) * @parameter: $mainpos 主字符串起始索引(可选参数) * @parameter: $modepos 模式串起始索引(可选参数) * @parameter: $matcheds 匹配到的索引数组(不需传入的参数,只作为递归时函数传递参数之用) * @return: $matcheds 如果非空返回匹配到的索引数组,否则返回-1 */ function myStrPos_recursive( $mainstr, $modestr, $mainpos = 0, $modepos = 0, $matcheds = array() ) { //若数组为空则返回-1,否则返回匹配到的数组 if( !isset( $mainstr[$mainpos] ) ) { return empty($matcheds)?-1:$matcheds; } //如果匹配到了就继续与模式串的下一个字符比较 if ( $modestr[$modepos] == $mainstr[$mainpos] ) { if ( !isset($modestr[$modepos+1]) ){ //将匹配结果加入数组 array_push( $matcheds, $mainpos - $modepos ); return myStrPos_recursive ( $mainstr, $modestr, ++$mainpos, 0, $matcheds ); } return myStrPos_recursive ( $mainstr, $modestr, ++$mainpos, ++$modepos, $matcheds ); } //否则回溯主串字符数组索引 else { return myStrPos_recursive ( $mainstr, $modestr, $mainpos-=$modepos-1, 0, $matcheds ); } } /** * @description: 获取模式串在主字符串中的所有首字母出现索引位置(迭代版) * @author: cutefrog(injection.mail@gmail.com) * @parameter: $mainstr 主字符串(必要参数) * @parameter: $modestr 模式串(必要参数) * @return: $matcheds 如果非空返回匹配到的索引数组,否则返回-1 */ function myStrPos_iteration( $mainstr, $modestr ) { $mainlen = strlen( $mainstr ); $modelen = strlen( $modestr ); $matchedpos = -1; $limit = 0; $matcheds = array(); for ( $mainpos = 0; $mainpos < $mainlen; $mainpos++ ){ for ( $modepos = 0; $modepos < $modelen; $modepos++ ) if ( $modestr[$modepos] == $mainstr[$mainpos] ){ if ( $modepos == ( $modelen - 1 ) ){ $matcheds[$limit++] = $mainpos - $modepos; break; } $mainpos++; } else { $mainpos = $mainpos - $modepos; break; } } return empty($matcheds)?-1:$matcheds; } $mainstr = 'dccabsccadsacca'; $modestr = 'cca'; print_r( myStrPos_recursive( $mainstr, $modestr ) ); print_r( myStrPos_iteration( $mainstr, $modestr ) ); ?>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)