Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

fopen() не принимает имя файла

5.9K
19 апреля 2007 года
assign
60 / / 13.12.2005
Здравствуйте!

******** php-код ********

<?php

$lines = file("catalog.txt");
$row = $lines[0];
$fields = explode("|", $row);
$name = $fields[0];
$userid = $fields[3];
$msgfile = $name . $userid . ".txt";

echo $name;
echo "<BR>";
echo $userid;
echo "<BR>";
echo $msgfile;
echo "<BR>";

$fd = fopen($msgfile, "r");
fclose($fd);

echo "<H1> OK! </H1>";

?>

************ Листинг файла catalog.txt ***********

Иван|ivan@petrov.net|Москва|1166462395
Сашка|zero@mail.ru|Саранск|1166462400
lola|lola@yandex.ru|Москва|1166462445

Проблема этого кода вот в этой строке:

$msgfile = $name . $userid . ".txt";

Если имя файла составить показанным выше способом, то функция
fopen($msgfile, "r") не может открыть файл и ругается: failed to open stream: Invalid argument.

Однако, если имя файла указать явно:

$msgfile = "Иван" . "1166462395" . ".txt";

то файл открывается без проблем.

Вы понимаете почему? Я - нет!
253
19 апреля 2007 года
Proger_XP
1.5K / / 07.08.2004
Ты пробовал распечатать var_dump($msgfile)?
5.9K
19 апреля 2007 года
assign
60 / / 13.12.2005
Цитата:

Ты пробовал распечатать var_dump($msgfile)?



Сделал var_dump, вот результат: string(20) "Иван1166462395 .txt"

А откуда пробел перед ".txt" ?

8
19 апреля 2007 года
mfender
3.5K / / 15.06.2005
Цитата: assign
Сделал var_dump, вот результат: string(20) "Иван1166462395 .txt"

А откуда пробел перед ".txt" ?


На конце каждой строки стоит ещё один символ - конец строки. Поэтому делай так:

 
Код:
$msgfile = trim($name) . trim($userid) . ".txt";
253
20 апреля 2007 года
Proger_XP
1.5K / / 07.08.2004
Вот она, вся сила var_dump()'а :D :D
5.9K
20 апреля 2007 года
assign
60 / / 13.12.2005
Цитата:

$msgfile = trim($name) . trim($userid) . ".txt";



Ага! Я потом сам додумался до этого же решения. Только $name не пришлось через trim пропускать - и так прокатило.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог