我正在尝试比较2个字符串。我从数组中获取第一个字符串,第二个我读取目录。问题是我试图比较数组名称与读取和相同的文件的名称。字符串是:
algo está cambiando.mp3
它出现在数组和目录中。
我打印以下消息进行检查:
数组长度:30algoestácambiando.mp3//数组元素
文件长度:23algoestácambiando.mp3// file
我正在使用此代码进行比较,并且总是抛弃我是假的。我不知道,因为他们是不同的。
echo "<br>array length: ".mb_strlen(($arrayPosiciones[$x])). " ". ($arrayPosiciones[$x]);
echo "<br>file length:".mb_strlen(($d)). " ".($d) ;
我认为这是口音或其他问题。我在很多方面都尝试过。即使是阵列,我也为具有波浪号的物品添加了htmlentities。这个词显示正确。
for($i=0; $i<count($arrayPosiciones); $i++){
$arrayPosiciones[$i]=htmlentities($arrayPosiciones[$i]);
}
我能做什么?我正在迭代一个目录,并在$ arrayPosiciones中比较当前文件是否等于此。
$ruta=$_REQUEST['ruta'];
$dir =scandir($ruta);
foreach($dir as $d){
if(substr($d,-3)=='Mp3' || substr($d,-3)=='mp3' || substr($d,-3)=='MP3' || substr($d,-3)=='WMA' || substr($d,-3)=
for( $x=0; $x<count($arrayPosiciones); $x++){
if($arrayPosiciones[$x]==$d){ echo "is the same!"; }
.
.
.
echo "<br>array: ". strlen(trim($arrayPosiciones[$x]));
echo "<br>file: ". strlen(trim($d));
if( strlen(trim($arrayPosiciones[$x])) ==strlen(trim($d)) ){
echo "===";
}
array: 30
file: 23
答案 0 :(得分:1)
这很可能是由于存储在文件中和数组中时的不同编码造成的。使用mb_convert_encoding将它们转换为一个编码,然后进行比较。
答案 1 :(得分:1)
我已经尝试过这个代码片段并且可以在linux服务器上运行,但不能用于mac。
<?php
// In the very first line of your code
ini_set('default_charset', 'utf-8');
foreach($dir as $d){
if(substr($d,-3)=='Mp3' || substr($d,-3)=='mp3' || substr($d,-3)=='MP3'){
$encoded_d = htmlentities($d, ENT_COMPAT, 'UTF-8');
$encoded_a = htmlentities($arrayPosiciones[0], ENT_COMPAT, 'UTF-8');
if($encoded_d == $encoded_a){
echo "is the same!";
}else{
echo "nope";
}
}
}
在Windows服务器上:
$ruta= getcwd();//$_REQUEST['ruta'];
$dir =scandir($ruta);
$arrayPosiciones[0] = "algo está cambiando";
foreach($dir as $d){
if(substr($d,-3)=='Mp3' || substr($d,-3)=='mp3' || substr($d,-3)=='MP3'){
$encoded_a = htmlentities($d, ENT_COMPAT, 'iso-8859-1');
$encoded_d = mb_convert_encoding($arrayPosiciones[1], 'iso-8859-1');
echo ($encoded_d);echo "<br>";
echo ($encoded_a);echo "<br>";
if($encoded_d == $encoded_a){
echo "is the same!";
}else{
echo "nope";
}
}
}
如果我在数组中设置参数url-encode iso-8859-1
并保留UTF-8
,那么在我的Windows服务器上工作正常。