使用php explode时,第一个变量是不可求的
我有两个文件,b.txt:使用php explode时,第一个变量是不可求的,php,explode,Php,Explode,我有两个文件,b.txt: &first = cjnk1 &second = dcnksj2 &third = cd3 &fourth = cdln4 和a.php: <?php $data=file_get_contents("b.txt"); $rows=explode("\n", $data); foreach($rows as $row) { $temp=explode(" = ",$row); $info[ltrim($temp
&first = cjnk1
&second = dcnksj2
&third = cd3
&fourth = cdln4
和a.php:
<?php
$data=file_get_contents("b.txt");
$rows=explode("\n", $data);
foreach($rows as $row)
{
$temp=explode(" = ",$row);
$info[ltrim($temp[0],"&")]=$temp[1];
}
echo '<pre>';
print_r($info);
echo $info["&first"];
?>
第一个索引有什么问题??即使我使用它,它也是不可选择的 尝试将ltrim$temp[0]、&替换为ltrim$temp[0]、&\x00..\x1F;。这将删除所有保留的ASCII字符0-31以及与号。尝试将ltrim$temp[0],&替换为ltrim$temp[0],&\x00..\x1F;。这将删除所有保留的ASCII字符0-31以及符号。要通过PHP删除BOM,请执行以下操作:
$BOM = substr($txt, 0, 3);
if ( $BOM == pack("CCC", 0xEF, 0xBB, 0xBF) ) {
$txt = substr($txt, 3);
}
更新
正如deceze所指出的,这应该也很好,但我还没有检查出来,如果有什么问题,请告诉我
要通过PHP删除BOM表,请执行以下操作:
更新
正如deceze所指出的,这应该也很好,但我还没有检查出来,如果有什么问题,请告诉我
可能在&之前有一些东西,比如不可打印字符。可能在&之前有一些转义字符。使用var_dump$temp[0];看看到底是什么。你的脚本很好用。也许你的文件头上有BOM或其他东西,请不要在Windows上使用记事本。我打赌文件开头有BOM,用谷歌搜索它。&首先应该是string6-那里有一些额外的东西。可能在&之前有一些东西,比如不可打印的字符。可能,在&之前有一些转义字符。使用var_dump$temp[0];看看到底是什么。你的脚本很好用。可能您的文件头中有BOM或其他内容,请不要在Windows上使用记事本。我打赌文件开头有BOM,请用google it搜索。&首先应该是string6-那里有其他内容。通常是的,但您可以更轻松地将BOM写为\x。。字符串文字…:@谢谢你的信息,但这意味着什么。。?请你给我一个提示,以便进一步阅读,谢谢。我的意思是:\xEF\xBB\xBF。这是BOM表的字符串文字。不需要背包。@deceze哦,明白了!我在看包装手册,想知道那是什么!再次感谢您的信息@deceze我已经更新了我的答案以反映您的观点,但是使用===是否更好?通常是的,但是您可以更轻松地将BOM编写为\x。。字符串文字…:@谢谢你的信息,但这意味着什么。。?请你给我一个提示,以便进一步阅读,谢谢。我的意思是:\xEF\xBB\xBF。这是BOM表的字符串文字。不需要背包。@deceze哦,明白了!我在看包装手册,想知道那是什么!再次感谢您的信息@我已经更新了我的答案来反映你的观点,但是使用==?
foreach($rows as $row)
{
$temp=explode(" = ",$row);
$info[substr($temp[0], 1)]=$temp[1];
}
$BOM = substr($txt, 0, 3);
if ( $BOM == pack("CCC", 0xEF, 0xBB, 0xBF) ) {
$txt = substr($txt, 3);
}
$BOM = substr($txt, 0, 3);
/* "Double Quotes" are important */
if ( $BOM == "\xEF\xBB\xBF" ) {
$txt = substr($txt, 3);
}