/////// Ответ на эту тему найден. Может, кому пригодится. См. внизу страницы /////////////////
Доброго времени суток.
Вот как бы код..... Всю ночь... нипонимать моя...
<?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. скорее всего ляп какой-то но найти не могу.
1. uralpt - 23 Мая, 2011 - 05:44:31 - перейти к сообщению
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. скорее всего ляп какой-то но найти не могу.
Вот как бы код..... Всю ночь... нипонимать моя...
<?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); // пустые строки зачем они вообще там?
3. SAD - 23 Мая, 2011 - 07:37:57 - перейти к сообщению
4. uralpt - 23 Мая, 2011 - 18:03:52 - перейти к сообщению
komprenda пишет:
первой строкой напиши error_reporting(E_ALL);
ошибки и так игнорируются. Просто это вырезанный кусок из основного скрипта.
komprenda пишет:
$q1_line = file ($price, FILE_IGNORE_EMPTY_LINES); // пустые строки зачем они вообще там?
$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);
вот как представляется число "11" в ASCII выдранное из нотепада:
strlen(11)= 5
0
49
0
49
0
т.е. между цифрами находится "NULL"
теперь дело техники
PS. вот что значит выспаться ))
(Добавление)
PS.
лечим:
$q1 = strip_tags($q1);