Какая-то чешуя с файловыми потоками
<?
$infile = "d:\probe.txt";
$outfile = "d:\newprobe.txt";
$in = fopen($infile,"r+");
if (!$in)
{
echo "Unable to open file!!!!";
exit();
}
else
echo "OK!!!";
$cont = fread($in,filesize($infile));
$cont = str_replace("времена","",$cont);
fclose($in);
$out = fopen($outfile,"w+");
fwrite($out,$cont);
fclose($out);
?>
первый поток открывается нормально и закрывается тоже по всей видимости нормально
а второй никак открыться не может
вот что пишется в логе сервера
[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] ewprobe.txt) [function.fopen]: failed to create stream: Invalid argument in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 27
[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] PHP Warning: fwrite(): supplied argument is not a valid stream resource in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 29
[Tue Jul 26 13:56:20 2005] [error] [client 127.0.0.1] PHP Warning: fclose(): supplied argument is not a valid stream resource in c:\Program Files\Apache Group\Apache\htdocs\Probes\search.php on line 31
короче первая ошибка вылезает там где я пытаюсь открыть поток $out - понять никак не могу что за беда
w+ - Открыть для чтения и записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.
Всё вроде правильно а ошибка выдаётся - в чём проблема?
А сама проблема скорее всего в том, что использовал обратный слэш внутри парных кавычек, а там он используется для экранирования последующих символов. Т.е. ты просто экранировал следующий за этим бэкслэшем символ. Чтобы в это убедиться попробуй вывести эти переменные на экран через echo
Варианты решения:
1. Использовать слэш (/)
2. Экранировать обратный слэш (\\)
3. Использовать одинарные кавычки
Первый файл открылся потому, что (\p) не является спец символом, а во втором случае получилось (\n), что означает объявление новой строки.
Цитата:
Originally posted by MasterSID
Первый файл открылся потому, что (\p) не является спец символом, а во втором случае получилось (\n), что означает объявление новой строки.
Первый файл открылся потому, что (\p) не является спец символом, а во втором случае получилось (\n), что означает объявление новой строки.
Спасибо большое всё получилось
Мастер он и есть мастер!!!
Не нужно меня в краску вгонять :) я еще только учусь :)