[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Странные ошибки
Dron19
всем привет, вот хотел написать код, коотрый удалит все переменные $end содержащиеся в файле admin.php, но почему-то не получается, вот код:

<?php
$open = "/admin.php";
$fp = fopen("$open","w");
$reading = fread($fp,filesize("$open"));
if (strpos($reading,"$end")) {
$read = preg_replace("/(.*)(\$end)(.*)/i","\\1\\3","$reading");
if($read) {
echo "<p>Все переменные с названием end вырезаны. Осталось отредактировать сам файл...<br>";
}
}

if(fwrite($fp,$read)) {echo "Все файл отредактирован, можно проверять</p>";}
fclose($fp);
?>

Он выдает вот такие ошибки:

Warning: fread(): Length parameter must be greater than 0. in k:\home\localhost\www\webstudio\deleteend.php on line 4

Notice: Undefined variable: end in k:\home\localhost\www\webstudio\deleteend.php on line 5

Warning: strpos(): Empty delimiter. in k:\home\localhost\www\webstudio\deleteend.php on line 5

Notice: Undefined variable: read in k:\home\localhost\www\webstudio\deleteend.php on line 11

Я все проверил, админ.пхп лежит в той же папке, где и файл с этим кодом.
Покажите пожалуйста где моя ошибка



Спустя 32 минуты, 48 секунд (16.10.2010 - 18:21) Lenarfate написал(а):
а ты переведи ошибки и все станет ясно

Спустя 8 минут, 6 секунд (16.10.2010 - 18:29) Dron19 написал(а):
я переводил

Спустя 46 секунд (16.10.2010 - 18:30) Dron19 написал(а):
длина файла должна быть больше 0, а последующие ошибки именно из-за этого, но файл не пустой, там тысяча строк

Спустя 5 минут, 34 секунды (16.10.2010 - 18:35) Dron19 написал(а):
блин, я понял

Спустя 34 секунды (16.10.2010 - 18:36) Lenarfate написал(а):
что ты понял?)

Спустя 36 секунд (16.10.2010 - 18:36) Dron19 написал(а):
оказывается файл усекается до 0 у меня, но почему??? В середине этого файла у меня есть переменные енд, что не так с моей регуляркой?

Спустя 1 минута, 7 секунд (16.10.2010 - 18:37) Dron19 написал(а):
идет код:
вщышпгощзывашповзащплвхаплщвшарпмагынпшг$endпрвыщпоывдапов

$endвапрывпвапва
только вмесо этих каракуль, у меня код

Спустя 32 секунды (16.10.2010 - 18:38) Dron19 написал(а):
и та регулярка которую я написал, сможет удалить только енд??? Вроде бы да, но почему не удаляет?

Спустя 31 секунда (16.10.2010 - 18:38) Dron19 написал(а):
только енд у меня окола 100 штук, поэтом пишу этот код

Спустя 48 секунд (16.10.2010 - 18:39) Dron19 написал(а):
подскажите пожалуйста, как бы правильней написать регулярку?

Спустя 5 минут, 15 секунд (16.10.2010 - 18:45) Dron19 написал(а):
ну вообще не пойму, почему он не вырезает, а только лишь все удаляет

Спустя 2 минуты, 35 секунд (16.10.2010 - 18:47) Dron19 написал(а):
почему молчите?

Спустя 4 минуты, 46 секунд (16.10.2010 - 18:52) Invis1ble написал(а):
Dron19
во-первых, зачем ты заключаешь названия переменных в кавычки?
Цитата
"$open", "$reading"

во-вторых, там вполне можно str_replace обойтись вместо preg_replace

Спустя 16 минут, 13 секунд (16.10.2010 - 19:08) Dron19 написал(а):
ну яхотел через регулярку

Спустя 1 минута, 3 секунды (16.10.2010 - 19:09) Dron19 написал(а):
подскажите плз, какое регулярное выражение нужно составить, что бы работало, а тоя уже способов 20 перепробывал и все то же самое, удаляется вся страница

Спустя 2 минуты, 35 секунд (16.10.2010 - 19:12) Invis1ble написал(а):
Dron19
так попробуй, вроде долно работать
<?php
$file = '/admin.php';
$f = fopen($file, 'r+') or die('Невозможно открыть файл!');

$strings = file($f);

foreach ($strings as $string)
fwrite($f, preg_replace('#(.*?)\$end(.*?)#', '$1$2', $string));

fclose($f);

Спустя 57 секунд (16.10.2010 - 19:13) Dron19 написал(а):
вот я переписал код:

<?
$open = "deleteend.php";
$fp = fopen($open,"w");
$reading = fread($fp,filesize($open));
if (strpos($reading,"$end")) {
$read = str_replace("$end","",$reading);
if($read) {
echo "<p>Все переменные с названием end вырезаны. Осталось отредактировать сам файл...<br>";
}
}

if(fwrite($fp,$read)) {echo "Все файл отредактирован, можно проверять</p>";}
fclose($fp);
$end = "sfgsf";
$end = "sd";
?>

но почему-то все равно удаляет всю страницу

Спустя 9 секунд (16.10.2010 - 19:13) arvitaly написал(а):
$str ='111111111111111$end222222222222222$enafsfgs3333333333$end4444444444';
echo preg_replace('~\$end~','',$str);

Спустя 1 минута, 3 секунды (16.10.2010 - 19:14) Invis1ble написал(а):
Dron19
у тебя там в твоем коде файл открывался в режиме создания нового пустого файла, поэтому наверно и не работало...

Спустя 20 секунд (16.10.2010 - 19:14) arvitaly написал(а):
'w' Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.

Спустя 7 минут, 39 секунд (16.10.2010 - 19:22) Invis1ble написал(а):
arvitaly
Д.Котеров, А.Костарев. PHP 5 в подлиннике.
Цитата
w - создает новый пустой файлю Если на момент вызова уже был файл с таким именем, то он предварительно уничтожается! ...

Спустя 50 секунд (16.10.2010 - 19:23) Dron19 написал(а):
у меня и с r+ не работает

Спустя 4 минуты, 47 секунд (16.10.2010 - 19:27) arvitaly написал(а):
Цитата
Д.Котеров, А.Костарев. PHP 5 в подлиннике.


Это новая документация?

Спустя 6 минут (16.10.2010 - 19:33) Invis1ble написал(а):
arvitaly
нет конечно, а что, неправду пишут, да?

Спустя 8 минут, 40 секунд (16.10.2010 - 19:42) Dron19 написал(а):
я переписал код, но он копирует сам себя почему-то:
<?php
$end = "";
echo $end;
$file = 'deleteend.php';

$fp = fopen($file,"r+");

$fread = fread($fp,filesize($file));

if ($vihod = preg_replace("|\$end|"," ",$fread)) { if (fwrite($fp,$vihod))

{ echo "Готово"; } }

?>

Спустя 2 минуты, 27 секунд (16.10.2010 - 19:45) Invis1ble написал(а):
Dron19
Цитата
у меня и с r+ не работает

$strings = file($f);
поменяй на
$strings = file($file);
в том коде, что я привел

Спустя 1 минута, 14 секунд (16.10.2010 - 19:46) Dron19 написал(а):
одно и тоже поменять на тоже?

Спустя 1 минута, 47 секунд (16.10.2010 - 19:48) Invis1ble написал(а):
Dron19
да нет, я по запаре написал, уже отредактировал...

Спустя 2 минуты, 15 секунд (16.10.2010 - 19:50) Invis1ble написал(а):
кстати, я проверил - работает

Спустя 18 минут, 18 секунд (16.10.2010 - 20:08) Dron19 написал(а):
, да работает, кажись просто файл был большим для чтения через fread

Спустя 1 минута, 3 секунды (16.10.2010 - 20:09) Админ написал(а):
arvitaly
Цитата
Это новая документация?

позор не знать этих авторов !

Спустя 3 минуты, 24 секунды (16.10.2010 - 20:13) Invis1ble написал(а):
Dron19
ну чо молчишь? получилось?

Сорри, не заметил новых постов..
Цитата
кажись просто файл был большим для чтения через fread

Режим, в котором открывал был не тот, я же написал.. В общем с тебя + wink.gif

Спустя 7 минут, 40 секунд (16.10.2010 - 20:20) arvitaly написал(а):
Цитата
позор не знать этих авторов !


ахахаха, для чего мне их знать.

Спустя 6 минут, 5 секунд (16.10.2010 - 20:26) Invis1ble написал(а):
arvitaly
Для справки: авторы непосредственно участвовали в разработке PHP 5

Спустя 1 день, 14 часов, 57 минут, 37 секунд (18.10.2010 - 11:24) Dron19 написал(а):
че то толку от режима w у функции fopen понять не могу, как только я открываю файл в этом режиме, то он сразу становится пустой, и че тогда с ним делать? Раньше просто пользовался им, и то, когда тоько вставляю тот же самый текст, от есть к примеру у меня есть файл бд.пхп и его код :тут код, всякая ерунда
тут открываю файл с режимом w и когда меняю его на что-то, то подставляю переменную в которой код от того файла, только изменненный к примеру формой ввода и только тогда

Спустя 4 часа, 57 минут, 29 секунд (18.10.2010 - 16:21) arvitaly написал(а):
юзайте a+

Спустя 4 часа, 27 минут (18.10.2010 - 20:48) Dron19 написал(а):
дело в том что нужно, что бы заменяло, а не копировало обработанный вид, то есть если а+, то она в файл который я обрабатываю скопирует тот же самый код который я обрабатывал, только вырежет все переменные $end, а нужно, что бы просто вырезать переменные и кодж не копировать, ну я уже нашел выход. Всем спасибо и удачи


_____________
PHP+MySQL - уже изучил, осталось всего лишь это:
C,C++,C#,JavaScript,Python,Ruby,Perl,OpenGl,DirectX,ASP.NET - Намерен учить все
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.