首页 / PHP / PHP glob与不区分大小写的匹配
PHP glob与不区分大小写的匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP glob与不区分大小写的匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2249字,纯文字阅读大概需要4分钟。
内容图文
我使用glob来查找文件夹
$str = "Test Folder";
$folder = glob("$dir/*$str*");
如何判断glob匹配以找到不区分大小写的匹配文件夹?
匹配测试文件夹,TEST FOLDER等
注意$str是脚本的未知输入!
解决方法:
我可以建议在$str的每个字母上构建不区分大小写的字符范围吗?
代码:(Demo)
function glob_i($string){ // this function is not multi-byte ready.
$result=''; // init the output string to allow concatenation
for($i=0,$len=strlen($string); $i<$len; ++$i){ // loop each character
if(ctype_alpha($string[$i])){ // check if it is a letter
$result.='['.lcfirst($string[$i]).ucfirst($string[$i]).']'; // add 2-character pattern
}else{
$result.=$string[$i]; // add non-letter character
}
}
return $result; // return the prepared string
}
$dir='public_html';
$str='Test Folder';
echo glob_i($str); // [tT][eE][sS][tT] [fF][oO][lL][dD][eE][rR]
echo "\n";
echo "$dir/*",glob_i($str),'*'; // public_html/*[tT][eE][sS][tT] [fF][oO][lL][dD][eE][rR]*
如果您需要多字节版本,这是我建议的片段:(Demo)
function glob_im($string,$encoding='utf8'){
$result='';
for($i=0,$len=mb_strlen($string); $i<$len; ++$i){
$l=mb_strtolower(mb_substr($string,$i,1,$encoding));
$u=mb_strtoupper(mb_substr($string,$i,1,$encoding));
if($l!=$u){
$result.="[{$l}{$u}]";
}else{
$result.=mb_substr($string,$i,1,$encoding);
}
}
return $result;
}
$dir='public_html';
$str='testovací slo?ku';
echo glob_im($str); // [tT][eE][sS][tT][oO][vV][aA][cC][íí] [sS][lL][oO][??][kK][uU]
echo "\n";
echo "$dir/*",glob_im($str),'*'; // public_html/*[tT][eE][sS][tT][oO][vV][aA][cC][íí] [sS][lL][oO][??][kK][uU]*
相关的Stackoverflow页面:
Can PHP’s glob() be made to find files in a case insensitive manner?
附:如果你不介意正则表达式的费用和/或你更喜欢浓缩的单行,那么这也是如此:(Demo)
$dir='public_html';
$str='Test Folder';
echo "$dir/*",preg_replace_callback('/[a-z]/i',function($m){return '['.lcfirst($m[0]).ucfirst($m[0])."]";},$str),'*'; // $public_html/*[tT][eE][sS][tT] [fF][oO][lL][dD][eE][rR]*
这是多字节版本:(Demo)
$encoding='utf8';
$dir='public_html';
$str='testovací slo?ku';
echo "$dir/*",preg_replace_callback('/\pL/iu',function($m)use($encoding){return '['.mb_strtolower($m[0],$encoding).mb_strtoupper($m[0],$encoding)."]";},$str),'*'; // public_html/*[tT][eE][sS][tT][oO][vV][aA][cC][íí] [sS][lL][oO][??][kK][uU]*
内容总结
以上是互联网集市为您收集整理的PHP glob与不区分大小写的匹配全部内容,希望文章能够帮你解决PHP glob与不区分大小写的匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。