Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сравнение значений текстового файла с заданными
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » сравнение значений текстового файла с заданными

Страниц (1): [1]
 

1. uralpt - 23 Мая, 2011 - 05:44:31 - перейти к сообщению
/////// Ответ на эту тему найден. Может, кому пригодится. См. внизу страницы /////////////////

Доброго времени суток.
Вот как бы код..... Всю ночь... нипонимать моя...

<?php

//Есть 2 строки: q1 - тектовые строка, выдернутая из текстового файла,
// q2 - название файла
//Задача - сравниваем второй элемент строки q2 с первым значением первого столбца price.txt (q1)


$q2_orig = "14 11 09 42 A.jpg"; //Это строка, в которой интересует значение "11"
$q2_orig = explode(" ", $q2_orig);
$q2 = $q2_orig[1]; //Получаем значение "11" в q2


$price = "price.txt"; //Это файл, который дербаним

$q1_line = file ($price); //Делим прайс по строкам
$line = count($q1_line); //Количество строк в файле прайса

for ($i=0; $i<$line; $i++) { //В цикле получаем 1-е значение 2-го столбца
$q1_tab = explode("\t", $q1_line[$i]); //Делим строку по табуляции
$q1_tab_pr = explode(" ", $q1_tab[1]); //Делим по пробелам
$q1 = $q1_tab_pr[0]; //Это значение из файла


echo "Значение ".$q1." сравниваем со значением ".$q2."<br>";

if ($q1 == $q2) {
echo "yes__".$q1."==".$q2."<br>";
}
else {
echo "no__".$q1."<>".$q2."<br>"; //В этом месте стучу в морду монитору
}
echo "<br>";
}
?>

Рядом текстовый файл, с которым сравниваем.
PS. скорее всего ляп какой-то но найти не могу.
2. komprenda - 23 Мая, 2011 - 05:55:28 - перейти к сообщению
uralpt пишет:
Доброго времени суток.
Вот как бы код..... Всю ночь... нипонимать моя...

<?php

//Есть 2 строки: q1 - тектовые строка, выдернутая из текстового файла,
// q2 - название файла
//Задача - сравниваем второй элемент строки q2 с первым значением первого столбца price.txt (q1)


$q2_orig = "14 11 09 42 A.jpg"; //Это строка, в которой интересует значение "11"
$q2_orig = explode(" ", $q2_orig);
$q2 = $q2_orig[1]; //Получаем значение "11" в q2


$price = "price.txt"; //Это файл, который дербаним

$q1_line = file ($price); //Делим прайс по строкам
$line = count($q1_line); //Количество строк в файле прайса

for ($i=0; $i<$line; $i++) { //В цикле получаем 1-е значение 2-го столбца
$q1_tab = explode("\t", $q1_line[$i]); //Делим строку по табуляции
$q1_tab_pr = explode(" ", $q1_tab[1]); //Делим по пробелам
$q1 = $q1_tab_pr[0]; //Это значение из файла


echo "Значение ".$q1." сравниваем со значением ".$q2."<br>";

if ($q1 == $q2) {
echo "yes__".$q1."==".$q2."<br>";
}
else {
echo "no__".$q1."<>".$q2."<br>"; //В этом месте стучу в морду монитору
}
echo "<br>";
}
?>

Рядом текстовый файл, с которым сравниваем.
PS. скорее всего ляп какой-то но найти не могу.


первой строкой напиши error_reporting(E_ALL);

$q1_line = file ($price, FILE_IGNORE_EMPTY_LINES); // пустые строки зачем они вообще там?
4. uralpt - 23 Мая, 2011 - 18:03:52 - перейти к сообщению
komprenda пишет:
первой строкой напиши error_reporting(E_ALL);


ошибки и так игнорируются. Просто это вырезанный кусок из основного скрипта.

komprenda пишет:

$q1_line = file ($price, FILE_IGNORE_EMPTY_LINES); // пустые строки зачем они вообще там?


А откуда там возьмутся пустые строки?

Но попробовал, все равно одно и то же.


Кусок результата выполнения скрипта:

Значение 10 сравниваем со значением 11
no__10<>11 //С этим согласен

Значение 11 сравниваем со значением 11
no__11<>11 //А вот это нипонимать...
(Добавление)
SAD пишет:
http://php.su/functions/?levenshtein


сделал сразу в цикле

$q1_line[$i] = trim ($q1_line[$i]); //А то строка длинная (больше 255 символов)
echo "strlen= ".strlen($q1_line[$i])."<br>"; //Посчитаем символы


Все равно результат шокирует:

strlen= 55
Значение 10 сравниваем со значением 11
no__10<>11 ////Согласен

strlen= 77
Значение 11 сравниваем со значением 11
no__11<>11 ////Ну почему?


На всякий случай приводил сравниваемые значения и к string, и к int... не помогает.
Где еще собака порылась?
(Добавление)
SAD пишет:
http://php.su/functions/?levenshtein


Сделал сравнение как

if (levenshtein ($q1, $q2) == 0) {
echo "yes__".$q1."==".$q2."<br>";
}
else {
echo "no__".$q1."<>".$q2."<br>"; //В этом месте стучу в морду монитору
}


Все равно утверждает, что значение "11" в q1 не равно "11" в q2
5. uralpt - 23 Мая, 2011 - 20:11:31 - перейти к сообщению
нашел-таки

вот как представляется число "11" в ASCII выдранное из нотепада:

strlen(11)= 5
0
49
0
49
0

т.е. между цифрами находится "NULL"

теперь дело техники

PS. вот что значит выспаться Улыбка))
(Добавление)
PS.
лечим:
$q1 = strip_tags($q1);

 

Powered by ExBB FM 1.0 RC1