в text2.txt есть 2 строки
в notext.txt 1 строка
Скрипт по идее должен сравнивать.
if($lines != $line) он почему то проигнорировал и потом он дошел до того что ему не с чем было сравнивать следующую строку и он ошибку выплюнул.
Warning: fopen() expects parameter 1 to be string, array given in /home/u11433/spss/www/ru/index3.php on line 26
$file = file('text2.txt');
$nofile = file('notext.txt');
foreach($nofile as $vals => $lines)
{
foreach($file as $val => $line)
{
if($lines != $line)
{
$intxt = fopen('notext.txt',"a+");
fwrite($intxt,"$line");
fclose($intxt);
}
}
}
Как мне правильно сделать сравнение ?
Спустя 6 минут, 49 секунд (20.01.2012 - 13:23) Winston написал(а):
Цитата (Frost-56 @ 20.01.2012 - 12:16) |
Как мне правильно сделать сравнение ? |
$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);
file_put_contents('notext.txt', implode("\n", $diff));
Спустя 9 минут, 8 секунд (20.01.2012 - 13:32) Frost-56 написал(а):
о, спасибо)
Спустя 8 минут, 29 секунд (20.01.2012 - 13:40) killer8080 написал(а):
Frost-56
нужно полное совпадение? Или порядок строк не имеет значения?
нужно полное совпадение? Или порядок строк не имеет значения?
Спустя 1 минута, 6 секунд (20.01.2012 - 13:42) Frost-56 написал(а):
порядок строк не имеет значение, лишь бы там не была найдена или не найдена такая строка
Спустя 2 минуты, 6 секунд (20.01.2012 - 13:44) killer8080 написал(а):
Цитата (Frost-56 @ 20.01.2012 - 12:42) |
порядок строк не имеет значение, лишь бы там не была найдена или не найдена такая строка |
Ну тогда array_diff идеально подходит

Спустя 22 минуты, 30 секунд (20.01.2012 - 14:06) Frost-56 написал(а):
что то не хочет работать, жопой чую что моя ошибка, ток не вижу её.
$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);
foreach($file as $val => $line)
{
if(file_put_contents('notext.txt', implode("\n", $diff)))
{ echo 'Строка найдена, иду дальше...'; }
else
{
$intxt = fopen('notext.txt',"a+");
fwrite($intxt,"$line");
fclose($intxt);
}
}
Спустя 2 минуты, 26 секунд (20.01.2012 - 14:09) Winston написал(а):
Замени свои 14 строк на мои 4
Спустя 3 минуты, 58 секунд (20.01.2012 - 14:13) Frost-56 написал(а):
а толку ? мне же проверку делать надо, если не найдена строка такая, то сделать запись.
Спустя 2 минуты, 46 секунд (20.01.2012 - 14:15) Winston написал(а):
Frost-56
Скажи честно, ты запускал мой пример? закомментируй свой код, и запусти мой.
Спустя 2 минуты, 41 секунда Winston написал(а):
PS: почитай, что делают file() и array_diff
Скажи честно, ты запускал мой пример? закомментируй свой код, и запусти мой.
Спустя 2 минуты, 41 секунда Winston написал(а):
PS: почитай, что делают file() и array_diff
Спустя 6 минут, 41 секунда (20.01.2012 - 14:22) Frost-56 написал(а):
запустил, ничего не изменилось.
в text.txt 2 строки в notext.txt так же 1 строка.
про array_diff почитал, понял частично.
в text.txt 2 строки в notext.txt так же 1 строка.
про array_diff почитал, понял частично.
Спустя 6 минут, 35 секунд (20.01.2012 - 14:29) Winston написал(а):
Хорошо. А так что выведет на экран?
Спустя 5 минут, 1 секунда Winston написал(а):
Походу array_diff не пашет со строками в которых присутствует пробел...
$file = file('text2.txt');
$nofile = file('notext.txt');
$diff = array_diff($nofile, $file);
print_r($diff);
Спустя 5 минут, 1 секунда Winston написал(а):
Походу array_diff не пашет со строками в которых присутствует пробел...
Спустя 12 минут (20.01.2012 - 14:41) asokol написал(а):
Winston, 
Frost-56, "так же 1 строка" - если остается та строка, которая была до этого, то у Вас файл недоступен для записи или же не определена функция file_put_contents. Если другая (из первого файла), то все работает верно.

Frost-56, "так же 1 строка" - если остается та строка, которая была до этого, то у Вас файл недоступен для записи или же не определена функция file_put_contents. Если другая (из первого файла), то все работает верно.
Спустя 6 минут, 40 секунд (20.01.2012 - 14:47) Frost-56 написал(а):
Array ( [0] => Строка1 )
вот результат.
вот результат.
Спустя 2 минуты, 38 секунд (20.01.2012 - 14:50) Winston написал(а):
Цитата (Frost-56 @ 20.01.2012 - 13:47) |
вот результат |
Это то слово которое отсутствует в text2.txt ?
Спустя 1 минута, 14 секунд (20.01.2012 - 14:51) Frost-56 написал(а):
Нет, это слово в обеих файлах присутствует, а вот слово Строка 2 есть только в text.txt
Спустя 2 часа, 10 минут, 55 секунд (20.01.2012 - 17:02) Frost-56 написал(а):
поможет кто с проверкой ?
Спустя 2 дня, 18 часов, 49 минут, 22 секунды (23.01.2012 - 11:51) Frost-56 написал(а):
ау народ)
Спустя 2 часа, 48 минут, 2 секунды (23.01.2012 - 14:39) killer8080 написал(а):
Frost-56
а так?
а так?
$file = array_map('trim', file('text2.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
$nofile = array_map('trim', file('notext.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
$diff = array_diff($nofile, $file);
echo '<pre>'.print_r($diff, 1).'</pre>';
Спустя 7 часов, 7 минут, 31 секунда (23.01.2012 - 21:47) Frost-56 написал(а):
Вывел
и в файл notxt.txt ничего не записалось.
Array
(
)
и в файл notxt.txt ничего не записалось.
Спустя 17 минут, 25 секунд (23.01.2012 - 22:04) Игорь_Vasinsky написал(а):
дай содержимое 2х своих файлов
Спустя 2 минуты, 55 секунд (23.01.2012 - 22:07) Frost-56 написал(а):
Файл text.txt
Файл notxt.txt
Строка1
Строка2
Файл notxt.txt
Строка1
Спустя 8 минут, 13 секунд (23.01.2012 - 22:15) Игорь_Vasinsky написал(а):
<?php
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');
echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>
на выходе
Array
(
[0] => Строка1
)
Спустя 58 секунд (23.01.2012 - 22:16) Winston написал(а):
У него походу с кодировками трабла... Если так не получается.
Спустя 1 минута, 47 секунд (23.01.2012 - 22:18) Frost-56 написал(а):
А у меня на выходе пустая страница =(
Спустя 24 секунды (23.01.2012 - 22:19) Игорь_Vasinsky написал(а):
А так что кажет?
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');
echo '<pre>' . print_r($arr1, 1) . '</pre>';
echo '<pre>' . print_r($arr2, 1) . '</pre>';
Спустя 54 секунды (23.01.2012 - 22:20) Frost-56 написал(а):
А так, вот что показывает
Array
(
[0] => Строка1
[1] => Строка2
)
Спустя 34 секунды (23.01.2012 - 22:20) Игорь_Vasinsky написал(а):
а второй где?
Спустя 32 секунды (23.01.2012 - 22:21) Frost-56 написал(а):
это всё что показывает, что же я врать буду)
Спустя 1 минута, 1 секунда (23.01.2012 - 22:22) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:21) |
это всё что показывает, что же я врать буду) |
Жесть!
Короче, перепиши все в файлах латиницей (то есть английскими символами).
И что будет выведено?
Спустя 1 минута, 15 секунд (23.01.2012 - 22:23) Игорь_Vasinsky написал(а):
у тя один файл пустой - ты сам не видишь чтоли?
Спустя 41 секунда (23.01.2012 - 22:24) Frost-56 написал(а):
разницы нету, вот что показывает
Оба файла не пустые
Array
(
[0] => Str1
[1] => Str2
)
Оба файла не пустые
Спустя 1 минута, 29 секунд (23.01.2012 - 22:25) Игорь_Vasinsky написал(а):
блин. у тя тока один файл с 2мя строками.
во втором файле где одна строка - сотри её и напиши поновой, и в кокой кодировке файл - скажи?
во втором файле где одна строка - сотри её и напиши поновой, и в кокой кодировке файл - скажи?
Спустя 46 секунд (23.01.2012 - 22:26) Frost-56 написал(а):
cp1251 кодировка.
Цитата |
во втором файле где одна строка - сотри её и напиши поновой |
именно так и делал
Спустя 2 минуты, 2 секунды (23.01.2012 - 22:28) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:24) |
разницы нету, вот что показывает |
WTF???

У тебя срабатывает только одна print_r
Почему вторая не отображается??? Даже если файл будет пустой, то на экран массив пустой будет выведен.
Спустя 33 секунды (23.01.2012 - 22:28) Игорь_Vasinsky написал(а):
так.
выполни такой код
выполни такой код
file_put_contents('notxt.txt', 'Строка 2');
echo '<pre>' . print_r(file('notxt.txt'), 1) . '</pre>';
Спустя 2 минуты, 13 секунд (23.01.2012 - 22:31) Frost-56 написал(а):
Выполнил код, потом раскоментировал echo и вот что показал
Array
(
[0] => Строка 2
)
Спустя 29 секунд (23.01.2012 - 22:31) Игорь_Vasinsky написал(а):
теперь
<?php
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');
echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>
Спустя 1 минута, 28 секунд (23.01.2012 - 22:33) Frost-56 написал(а):
А это бредом не будет, ведь в text.txt сейчас Str1 и Str2 т.к. на англиский просили, а в notxt.txt слово Строка 2 ?
Спустя 36 секунд (23.01.2012 - 22:33) Winston написал(а):
Цитата (Frost-56 @ 23.01.2012 - 21:31) |
Выполнил код, потом раскоментировал echo и вот что показал |
Ёпрст, так ты закомментировал строку, а потом говоришь, что не выводит ничего, а мы здесь в шоке

Спустя 1 минута, 3 секунды (23.01.2012 - 22:34) Frost-56 написал(а):
так а толку от него ? вы были в шоке ещё до того как предложили код который я раскоментил потом
Спустя 48 секунд (23.01.2012 - 22:35) Игорь_Vasinsky написал(а):
блин...
в первом файле снова нпиши свои строки - конечно это бред.
в первом файле снова нпиши свои строки - конечно это бред.
Спустя 49 секунд (23.01.2012 - 22:36) Игорь_Vasinsky написал(а):
Цитата |
Ёпрст, так ты закомментировал строку, а потом говоришь, что не выводит ничего, а мы здесь в шоке |


да это в моём предпоследнем было закоментировано - я сразу раскоментировал...
Спустя 28 секунд (23.01.2012 - 22:36) Winston написал(а):

Спустя 1 минута, 3 секунды (23.01.2012 - 22:37) Игорь_Vasinsky написал(а):
да вот в этом же :lol:
file_put_contents('notxt.txt', 'Строка 2');
#echo '<pre>' . print_r(file('notxt.txt'), 1) . '</pre>';
Спустя 38 секунд (23.01.2012 - 22:38) Frost-56 написал(а):
так, сейчас в text.txt
Строка1
Строка2
В notxt.txt
Строка2
Использовал код :
Результат:
Array
(
)
Строка1
Строка2
В notxt.txt
Строка2
Использовал код :
$arr1 = file('text2.txt');
$arr2 = file('notxt.txt');
echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
Результат:
Array
(
)
Спустя 3 минуты, 43 секунды (23.01.2012 - 22:42) Игорь_Vasinsky написал(а):
<?php
$arr1 = file('text2.txt');
file_put_contents('notext.txt', 'Строка 2');
$arr2 = file('notxt.txt');
echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>';
?>
Спустя 1 минута, 19 секунд (23.01.2012 - 22:43) Frost-56 написал(а):
Array
(
[0] => Строка 2
)
Спустя 1 минута, 27 секунд (23.01.2012 - 22:44) Игорь_Vasinsky написал(а):
юхууууу.
ты как в файлы строки пишешь? в блокноте?

ты как в файлы строки пишешь? в блокноте?
Спустя 2 минуты, 15 секунд (23.01.2012 - 22:47) Frost-56 написал(а):
Ну да, в тотал командере открываю через Akelpad+.
исправил из Строка 2 на Строка2 и вот результат ))
Array
(
)
исправил из Строка 2 на Строка2 и вот результат ))
Array
(
)
Спустя 1 минута, 4 секунды (23.01.2012 - 22:48) Игорь_Vasinsky написал(а):
ты в обычном блокноте попробуй.. акела режет что то или коверкает.. там какая кодировка по умолчанию для документов? в php страницы - какая?
Спустя 2 минуты, 4 секунды (23.01.2012 - 22:50) Frost-56 написал(а):
кодировка файла 1251 (ANSI-Кириллица)
а charset в коде не выставлял и в .htaccess нету charset.
попробовал через обычный, разницы нету =(
а charset в коде не выставлял и в .htaccess нету charset.
попробовал через обычный, разницы нету =(
Спустя 3 минуты, 4 секунды (23.01.2012 - 22:53) Игорь_Vasinsky написал(а):
попробуй написать
Строка 2
потом нажать enter и сохранить
и проверь код.
Строка 2
потом нажать enter и сохранить
и проверь код.
Спустя 1 минута (23.01.2012 - 22:54) Frost-56 написал(а):
Ничего не изменилось =(
Спустя 42 секунды (23.01.2012 - 22:55) Игорь_Vasinsky написал(а):
прикрепи свой notxt.txt
Спустя 2 минуты, 54 секунды (23.01.2012 - 22:58) Frost-56 написал(а):
прикрепил и вот весь код который использовал
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
$arr1 = file('text2.txt');
file_put_contents('notext2.txt', 'Строка2');
$arr2 = file('notext2.txt');
echo '<pre>' . print_r(array_diff($arr2, $arr1), 1) . '</pre>'; ?>
Спустя 3 минуты, 40 секунд (23.01.2012 - 23:01) Winston написал(а):
Открыл этот файл на линуксе и .... ЁПРСТ
А там такое
羊痤赅2
А там такое
羊痤赅2



Спустя 22 секунды (23.01.2012 - 23:02) Игорь_Vasinsky написал(а):
Array
(
[0] => Строка1
)
с файлом - всё пучком.
Спустя 58 секунд (23.01.2012 - 23:03) Frost-56 написал(а):
Так нормально или нет ? ))))
Спустя 1 минута, 11 секунд (23.01.2012 - 23:04) Игорь_Vasinsky написал(а):
у меня нормально - под виндой денвер.