有时候我们需要对字符串进行对比的时候会先对字符串使用strtolower将字符串转为小写,但是当遇到字符串中包含中文的情况下,这种情况下会出现问题,中文字符串经过strtolower转换后会变为乱码,搜索了一番确定了这为php系统函数的一个bug,但问题还是需要解决,下面经过摸索得出两种解决办法。
(1)第一种是检测字符串中是否包含中文,如果包含中文就不进行小写转换比较了。
这里总结了一个函数,判断一个字符串是否是由纯英文,纯中文或者中英文混合组成。
<p>/*</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/2191">
<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680141089375.png" alt="笔目鱼英文论文写作器">
</a>
<div class="aritcle_card_info">
<a href="/ai/2191">笔目鱼英文论文写作器</a>
<p>写高质量英文论文,就用笔目鱼</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="笔目鱼英文论文写作器">
<span>87</span>
</div>
</div>
<a href="/ai/2191" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="笔目鱼英文论文写作器">
</a>
</div>
*function:检测字符串是否由纯英文,纯中文,中英文混合组成<br />*param string<br />*return 1:纯英文;2:纯中文;3:中英文混合<br />*/<br />function check_str($str=''){<br /> if(trim($str)==''){<br /> return '';<br /> }<br /> $m=mb_strlen($str,'utf-8');<br /> $s=strlen($str);<br /> if($s==$m){<br /> return 1;<br /> }<br /> if($s%$m==0&&$s%3==0){<br /> return 2;<br /> }<br /> return 3;<br /><p>}</p>(2)使用urlencode将字符串进行编码之后,然后再比较,比第一种方法更全面一些。具体过程为:
strtolower(urlencode($str));
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号