- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Вот такой вот мой первый скриптик, ручной труд так сказать :%:?%:?%, поэтому пора что-то делать :)
Скажите где ошибки, суть скрипта простая:
Должен находить во всех файлах (в той папке, где лежит сам) текст между <h2> </h2>, но так, чтобы там не было слова "Бизнес". Как нашел, так в том же файле находит title и в конец заголовка добавляет то, что нашел до этого в <h2>.
Очень непонятем момент с массивом и тем, что потом происходит с тем тчо нашел скрипт. Будет ли он это сохранять? Нужно ли было объявлять массив так как я это сделал? Если он записал в массив то тчо нужно, правильно ли я добавил на следующей строке? Еще непонятно, почему именно массив нужен (так было в примере с регулярными выражениями) если я там просто поставлю переменную (не объявляя ее по сути т.к. это не обязательно как я понял) и ее буду перезаписывать т.к. если я правильно понял, то массив нужен был бы мне, если бы я хотел все найденные значения потом сохранить т.е. они бы лежали себе в массиве :rolleyes:
Просто с синтаксисом полные дрова и пониманием многих вещей :confused: Расскажите кому не сложно?
В корне неправильно
<?php
$array = array (); // Задал массив в который нужно будет записывать потом то что найдет скрипт
for ($i = 1; $i < 54; $i++) { // Теперь нужен цикл, чтобы заходить во все файлы по очереди
$fp = file_get_contents("$i.php"); // Открываем файл
// preg_grep("/^<h2>(?!Бизнес)(.*)</h2>$/", $array); -- непойму, что ты пытаешься тут найти, но синтаксис тут другой:
// array preg_grep($string, array $match)
// Ищем в <h2> и записываем в массив. Тут тоже надо по другому, если конечно ты хотел найти что лежит в <title>
if (preg_match("/<title>(.*)</title>/", $fp, $matches))
{ $array[] = $matches[1]; } //
fclose($fp); // Закрываем файл
}
print_r ($array);
?>
___________________________________________
$array = array();
for ($i = 0; $i < 54; $i++)
{
$fp = file_get_contents($i.'.php');
if (preg_match('/<h2>(!Бизнес)</h2>/'), $fp, $match))
{
if (preg_match('/<title>(.*)</title>/', $fp, $matches))
{
$array[] = $matches[1].' '.$match[1]
}
}
}
print_r($array);
Если не ошибаюсь, то так...
Сомневаюсь, что так прокатит, во первых, имя файла будет не '1.php', а ' 1 .php', т.е. с пробелами. Во-вторых, fopen может принимать только 1 аргумент, задающий доступ к файлу, так что надо его открывать либо для чтения, либо для записи, а в вашем случае и для того, и для другого.
Внимательнее читайте мануал:
array preg_grep (string pattern, array input)
preg_grep() возвращает массив, состоящий из элементов массива input, совпавших с данным pattern.
Поскольку на момент вызова preg_grep $array пуст, то ничего она не найдет.
Для решения вашей задачи я бы сделал по-другому:
1. Считал весь файл в строку через file_get_contents();
2. Нашел все вхождения <h2>(!Бизнес)....</h2> и записал бы их в массив с помощью eregi();
3. Если нужно, заменил бы все вхождения </title> на {результат поиска <h2>}</title> простым str_replace().
Сомневаюсь, что так прокатит, во первых, имя файла будет не '1.php', а ' 1 .php', т.е. с пробелами. Во-вторых, fopen может принимать только 1 аргумент, задающий доступ к файлу, так что надо его открывать либо для чтения, либо для записи, а в вашем случае и для того, и для другого.
В книге написано, что это возможно, там таблица с модификаторами и описанием
Dalim,
нет неработает:
А почему так изменено начало и конец строки, там же нужно ставить ^ и $ ?
Вот еще, что непонятно:
Зачем вы накладываете условия? Можно же просто построчно выполнить... а зачем конструкция с условиями, если у них только по ветке да все идет и смысла в условие нет впринципе т.к. исход всеравно один или пошагово не выполнится? 😕
В книге написано, что это возможно, там таблица с модификаторами и описанием
Гм.. не знаю, что там за книга такая... Цитата:
'r+' - Открыть для чтения и записи; поместить указатель в начало файла.
'w+' - Открыть для чтения и записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.
А 2 аргумента он принимать не может, ибо тогда может быть ошибок с доступом к файлу немеряно. Таким образом, перед записью вам надо использовать fopen('...', 'w+').
Oniks,
Энди Харрис "PHP и MySql для начинающих"
тип: чтение и запись: "r+""w+".
Segey, по данному вопросу:
http://phpclub.ru/manrus/f/fopen.html .
И, вообще, - рекомендую:
http://phpclub.ru/manrus/
СКОРПИОН,
На книге написано "PHP Club Рекомендует" :)
СКОРПИОН,
На книге написано "PHP Club Рекомендует"
В оффлайне ссылки тоже имеют вес ;)
Segey, извини... ошибку допустил
после $array[] = $matches[1].' '.$match[1] поставь ;
И проверь, вроде должно работать...
начало и конец строки ставить не надо... потому как у тебя весь файл в одной строке и следовательно никаких title и h2 в начале быть неможет.
Открывать файл советую функцией file_get_contents();
Пошагово мой пример выполнится, но всеже, если будет сбой и часть информации не придет, то может вылетить несколько ошибок, чего особо не надо.
Проверь, если работать небудет, дай адрес страницы, которую надо пропарсить (примерчик), я для нее напишу и сразу опробую.
Oniks, Вы не правы, fopen может принимать несколько модификаторов, только перечисляться они должны в одном аргументе, например "r+b" или "wb" и т.п.