|
|
|
| Подскажите пожалуйста, как заставить скрипт работать:
- задача в том, чтобы открыть поочередно (файлов там несколько) файл html из директории '/pages' в корне, как массив, затем дописать в него, вместо тега </body>, некоторое колличество ссылок из файла links.txt, дописав </body> обратно.
<?php
$handle = opendir('./pages');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$read = file('./pages/'.$file); // читает нужный файл, как массив
z++;
$links = file('links.txt'); // читает файл links.txt, как массив
shuffle($links); // перемешивает
$links = array_slice($links,0,rand(5,10)); //берет от 5 до 10 ссылок
$links = implode(" ",$links);
$new_file = str_replace('</body>',$links.'</body>',$read); // производит замену
}
}
?>
|
Заранее благодарен! | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 14:26)
| | Открыть файл как массив функцией file() можно, но вы уверены, что html-файл у вас будет прочитан как необходимый вам массив? | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 14:52)
| | Вообще-то не уверен, но как еще можно открыть html файл, не изменив его структуры? | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 14:56)
| | Считывайте весь файл, readfile, и в содержимом делайте замену.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 15:33)
| | Написал такой скриптик для проверки
<?php
$handle = opendir('./pages');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$read = readfile('./pages/'.$file); // читает нужный файл
echo $read;
}
}
?>
|
теперь файл читается корректно, спасибо за здравую мысль! | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 15:51)
| | Доработал скрипт, но к сожалению выдает синтаксическую ошибку в строке 9 (z++;), как сделать правильно счетчик в данном случае?
<?php
$handle = opendir('./pages');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
z++;
echo $file.'<br>';
$read = readfile('./pages/'.$file); // читает нужный файл
$links = readfile('links.txt'); // читает файл links.txt
shuffle($links); // перемешивает
$links = array_slice($links,0,rand(5,10)); //берет от 5 до 10 ссылок
$links = implode(" ",$links);
$new_file = str_replace('</body>',$links.'</body>',$read); // производит замену
if $new_file = fopen("$new_file","w+");
{
echo 'сюсефулли камплитед';
}
else echo 'ошибка открытия файла';
fclose($new_file);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 15:56)
| | Счетчик чего? И что это вообще такое z? Такого быть не может в РНР, может быть $z. | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 16:11)
| | Спасибо за замечание! не пойму как правильно организовать переход на новый файл?
<?php
$handle = opendir('./pages');
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
break;
echo $file.'<br>';
$read = readfile('./pages/'.$file); // читает нужный файл
$links = readfile('links.txt'); // читает файл links.txt
shuffle($links); // перемешивает
$links = array_slice($links,0,rand(5,10)); //берет от 5 до 10 ссылок
$links = implode(" ",$links);
$new_file = str_replace('</body>',$links.'</body>',$read); // производит замену
if ($new_file = fopen("$new_file","w+"));
{
echo 'сюсефулли камплитед';
}
else echo 'ошибка открытия файла';
fclose($new_file);
}
$z++;
}
?>
|
теперь ругается на unexpected T_ELSE в строке
else echo 'ошибка открытия файла';
|
| |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 16:28)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 17:30)
| | Да, в данном случае статические странички.
Пытаюсь сделать приложение на php, чтобы не обрабатывать это дело действительно "варварским" способом, т.е. вручную.
Oффтоп:
читал в топике $_POST ваше обсуждение автора одного курса php, имя которого решили даже не называть на этом форуме... посоветуйте пожалуйста хорошую книгу, которая бы могла дать начальное представление о конструкциях php, а то приходится "барахтаться" в коде, не всегда понимая, зачем нужны те или иные действия...
Спасибо1 | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 17:46)
| | Вверху форума выставлены ссылки на книги, авторами которых явлются создатели этого форума. Выбирайте.
Так не пойдет, лучше тогда встроить в данные html-страницы небольшой php-код, который будет вставлять ссылки, а не считывать дюжинами файлы что-то меня в них. Тем более в вашем коде столько ляпов, что... | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 17:53)
| | Был бы вам очень признателен, если бы вы указали мне на эти ляпы, дали возможность научиться и больше не совершать подобных ошибок)
С вариантом встроить код в сами странички согласен, но нет такой возможности в данном случае, эти странички все время меняются и нужно действать по мере их поступления. | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 18:01)
| | Если меняются, то значит создавать их надо с помощью РНР, то есть динамически, и тогда проблем вообще не будет. К тому же, вопрос, кто меняет, так что выход найти можно и в этом случае.
Что касается ошибок:
- фигурные скобки непарные, от этого и получаете ошибку.
- переменная $z неопределена, и она не то что считать не будет, интерпретатор просто будет вынужден выдать сообщение об ошибке.
- все ваши операции по замене коту под хвост, ибо вместо записи изменений вы непонятно что делаете.
- считывать ссылки в массив нужно вне цикла, гонять это в цикле нерационально.
Пишите код - делайте в нем отступы в конструкциях, читать его будет удобно. | |
|
|
|
|
|
|
|
для: sim5
(20.02.2011 в 18:16)
| | Считывание ссылок в цикле нужно для того, чтобы они перемешивались каждый раз.
sim5, постораюсь учесть ваши замечания, после проделанной над собой работы - надо больше читать.
Спасибо большое, удачи! | |
|
|
|
|
|
|
|
для: julpierto
(20.02.2011 в 18:45)
| | Для этого достаточно перемешать единожды полученный массив, что вы и делаете - shuffle(). От того что вы будете считывать сам файл ссылок в массив при каждом проходе цикла, от этого перемешивание лучшим не станет. | |
|
|
|