@TechNOIR

PHP. Как реализовать чтение из CSV для скрипта?

Добрый день.
Имеется простенький чат+бот на php.
Но он пробегается по заданному в скрипте блоку фраза+ответ:
$responses['what is your name'] = "My name is Mo-Pal.";
	$responses['tell me about yourself'] = "I am a chatbot. I'm still learning a lot of things so please forgive me if I can't answer you in some cases.";
	$responses["i'm fine"] = "Good. I'm happy about that.";

Хотелось бы реализовать чтение из csv файла.
Допустим чтобы в csv было 2 стобца. Столбец того что пишем боту и столбец того что отвечает бот.
5a591dcbd9ee1950515817.jpeg

Код скрипта:
<?php 
	$responses['what is your name'] = "My name is Mo-Pal.";
	$responses['tell me about yourself'] = "I am a chatbot. I'm still learning a lot of things so please forgive me if I can't answer you in some cases.";
	$responses["i'm fine"] = "Good. I'm happy about that.";
	$q = $_GET["q"];

	$response = "";

	if ($q != "") {
		$q = strtolower($q);
		foreach ($responses as $r => $value) {
			if (strpos($r, $q) !== false) {
				$response = $value;
			}
			
		}
	}
	$noresponse = "Sorry I'm still learning. Hence my responses are limited. Ask something else.";
	echo $response === "" ? $noresponse : $response;
?>


Есть идеи товарищи знатоки? В PHP пока новичок :(
Спасибо заранее!
  • Вопрос задан
  • 1966 просмотров
Решения вопроса 1
solotony
@solotony
покоряю пик Балмера
Как-то так

$f = fopen($filename, "r");
        // Читать построчно до конца файла
        while (!feof($f)) {

            $r = fgets($f);

            if ($encoding != 'UTF-8') {
                $r = mb_convert_encoding($r, 'UTF-8', $encoding);
            }

            chop($r);
            if (!$r) {
                continue;
            }

            $arr = preg_split('/;/', $r);
            if (!is_array($arr)) {
                continue;
            }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
Воспользоватся fgetcsv
Вот пример который демонстрирует работу, его легко можно адаптировать под Ваши задачи.
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num полей в строке $data: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы