<?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вапрывпвапва
только вмесо этих каракуль, у меня код
вщышпгощзывашповзащплвхаплщвшарпмагынпшг$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 в подлиннике.
Д.Котеров, А.Костарев. 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 |
Режим, в котором открывал был не тот, я же написал.. В общем с тебя +
Спустя 7 минут, 40 секунд (16.10.2010 - 20:20) arvitaly написал(а):
Цитата |
позор не знать этих авторов ! |
ахахаха, для чего мне их знать.
Спустя 6 минут, 5 секунд (16.10.2010 - 20:26) Invis1ble написал(а):
arvitaly
Для справки: авторы непосредственно участвовали в разработке PHP 5
Для справки: авторы непосредственно участвовали в разработке PHP 5
Спустя 1 день, 14 часов, 57 минут, 37 секунд (18.10.2010 - 11:24) Dron19 написал(а):
че то толку от режима w у функции fopen понять не могу, как только я открываю файл в этом режиме, то он сразу становится пустой, и че тогда с ним делать? Раньше просто пользовался им, и то, когда тоько вставляю тот же самый текст, от есть к примеру у меня есть файл бд.пхп и его код :тут код, всякая ерунда
тут открываю файл с режимом w и когда меняю его на что-то, то подставляю переменную в которой код от того файла, только изменненный к примеру формой ввода и только тогда
тут открываю файл с режимом 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 - Намерен учить все