@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 пока новичок :(
Спасибо заранее!
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
  • solotony
    @solotony
    code for food, caviar preferably
    Как-то так

    $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);
    }
    Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы