<?php
$string = file_get_contents("csv.csv");
$array = explode(",", $string);
$q = strtolower($_GET[q]);
foreach ($array as $value) {
$result = explode(":", $value);
if (strpos($q, $result[0]) !== false) {
$output = $result[1];
}
}
echo $output;
?>
以下是文件csv.csv
的内容,我将其转换为字符串。
hello: how are you doing,
hi: what are you,
df:df
如果$_GET[q]
(和$q
)为hello
,则$output
为how are you doing
。但是,如果是hi
,我就不会得到输出what are you
,或者如果我df
我得不到df
。
出现这种情况的原因是什么?提前感谢您的帮助。
答案 0 :(得分:1)
你用逗号爆炸,但事实是你用逗号加上换行符分隔每个值。
爆炸后,你的阵列是[&#34;你好&#34;,&#34; \ nhi ...&#34;,&#34; \ ndf:...&#34;],那& #39;为什么没有匹配的strpos比较。
试
$array = explode(",\n", $string);
编辑:正如@Michael Berkowski所说,你也可以修剪参数
if (strpos($q, trim($result[0])) !== false)
参数的顺序取决于您想要提供的部分匹配类型。使用您当前的参数顺序,参数&#34; hi&#34;会匹配&#34; hi&#34;,&#34; h&#34;和&#34;我&#34;但不是&#34;高&#34;。
如果按照迈克尔的建议翻转它们,参数&#34; hi&#34;会匹配&#34;嗨&#34;和&#34;高&#34;但不是&#34; h&#34;或者&#34;我&#34;。
答案 1 :(得分:1)
使用str_getcsv并将$ _GET [q]替换为$ _GET [&#39; q&#39;]修复了问题
$csv = file_get_contents('csv.csv');
$array = str_getcsv($csv);
var_dump($array);
$q = $_GET['q'];
foreach ($array as $value) {
$result = explode(":", $value);
if (strpos($q, $result[0]) !== false) {
$output = $result[1];
}
}
echo $output;