PHP字符串通过空格爆炸问题
我正在尝试使用空格作为分隔符进行一个非常简单的列表分解。但是,我对以下字符串有一些问题 “+0.59-+0.58%”“+0.06-+0.14%”“-0.47--1.07%”“-0.77--0.20%”//输入 以及应该由每个空格分隔的结果数组(引号也被删除) 数组([0]=>+0.59[1]=>-[2]=>+0.58%+0.06[3]=>-[4]=>+0.14%-0.47[5]=>-[6]=>-1.07%-0.77[7]=>-[8]=>-0.20%) 基本上,空间没有被正确识别。我已经尝试通过/n/r和“/\s*/m”将其分离 下面是我的代码片段PHP字符串通过空格爆炸问题,php,whitespace,space,spacing,Php,Whitespace,Space,Spacing,我正在尝试使用空格作为分隔符进行一个非常简单的列表分解。但是,我对以下字符串有一些问题 “+0.59-+0.58%”“+0.06-+0.14%”“-0.47--1.07%”“-0.77--0.20%”//输入 以及应该由每个空格分隔的结果数组(引号也被删除) 数组([0]=>+0.59[1]=>-[2]=>+0.58%+0.06[3]=>-[4]=>+0.14%-0.47[5]=>-[6]=>-1.07%-0.77[7]=>-[8]=>-0.20%) 基本上,空间没有被正确识别。我已经尝试通过/
$open = fopen("http://finance.yahoo.com/d/quotes.csv?s=$ticker&f=c&e=.csv", "r");
$quote = fread($open, 2000);
fclose($open);
$quote = explode(" ", $quote);
foreach ($quote as &$value) {
$value = str_replace('"',"",$value);
}
//print_r($tickerlist);
print_r($quote);
这样行吗
$newArr = explode('" "', $quote);
在适当的编辑器中打开一个文件(vim会很好。可能是记事本++),然后检查
选项卡字符和\r
和\n
如果要转换数据,只需使用此函数将csv文件解析为数组即可
function csv2array($string, $separatorChar = ',', $enclosureChar = '"', $newlineChar = "\n")
{
$array = array();
$size = strlen($string);
$columnIndex = 0;
$rowIndex = 0;
$fieldValue = "";
$isEnclosured = False;
for($i=0; $i<$size;$i++)
{
$char = $string{$i};
$addChar = "";
if($isEnclosured)
{
if($char == $enclosureChar)
{
if($i+1<$size && $string{$i+1} == $enclosureChar)
{
$addChar = $char;
$i++;
}
else
{
$isEnclosured = false;
}
}
else
{
$addChar=$char;
}
}
else
{
if($char==$enclosureChar)
{
$isEnclosured = true;
}
else
{
if($char==$separatorChar)
{
$array[$rowIndex][$columnIndex] = $fieldValue;
$fieldValue = "";
$columnIndex++;
}
elseif($char==$newlineChar)
{
//echo $char;
$array[$rowIndex][$columnIndex] = $fieldValue;
$fieldValue="";
$columnIndex=0;
$rowIndex++;
}
else
{
$addChar=$char;
}
}
}
if($addChar != "")
{
$fieldValue.=$addChar;
}
}
if($fieldValue)
{
$array[$rowIndex][$columnIndex] = $fieldValue;
}
return $array;
}
函数csv2array($string,$separatorChar=',',$enclosureChar=',$newlineChar=“\n”)
{
$array=array();
$size=strlen($string);
$columnIndex=0;
$ROWDINDEX=0;
$fieldValue=“”;
$isEnclosured=False;
对于($i=0;$i/n
?您的意思是\n
?会发生什么情况?您确定已正确打开并读取文件吗?该服务提供1“"每行包含一个数据集,因此使用fgets一次获取一行数据要比分解简单。担心这个打字错误,我对特殊字符串使用反斜杠,而不是前斜杠。除非,你的意思是分隔符中没有双引号。你能告诉我们你要分解的确切的文本字符串吗并向我们展示数组应该如何正确显示?$newArr=explode(“”“”,substr($quote,1,-1));