Нужно написать функцию get_links которая получает со страницы сайта все сыслки, определяя внутренние и внешние.

Сейчас есть функция, но она не везде корректно работает. Нужно либо доработать, либо написать свою

Нужно учитывать что ссылки могут быть записаны в html в любом виде, с кавычками и без, с http и без, с названием домена или без

например: href=?page=1 или href='post.php' target="_blank" или href="/post.php" итд

В общем нужно учесть всевозможные варианты.

Итак алгоритм:

1. Выдираем ссылки.

2. Отсекаем якоря (#) у ссылок (например http://site.ru/index.php#first)

3. Убираем внутренние ссылки на файлы (внешние оставляем)

4. Убираем ссылки вида mailto:

5. Сортируем на внутренние и внешние:

- Если ссылка содержит имя домена на котором расположена значит она внутренняя

- Если ссылка не содержит http значит она внутренняя

- Если ссылка содержит http и домен другой - значит она внешняя

6. Удаляем дубли внутренних ссылок (например array_unique) (внешние дубли удалять не надо)

7. Приводим ссылки к единому виду, тоесть:

если ссылка была вида href=?page=1 то приводим ее к виду http://site.ru/?page=1

В общем все неполноценные обрезанные ссылки нужно привести к нормальному виду.

В итоге функция должна возвращать массив с:

Внутренние ссылки: значение href и анкор для каждой.

Внешние ссылки: значение href и анкор для каждой если это ссылка на страницу

Внешние ссылки: значение href и анкор для каждой если это ссылка на файл

т.е. разграничение страниц и файлов

ВАЖНО: Нужно будет хорошо протестировать функцию перед сдачей, что бы она работала корректно и не сбоила.

Не стоит нагружать лишние циклы и прочие тяжелые вещи, т.к. нагрузка будет достаточно большой.

В принципе тут все решается регулярками.

Оплата Webmoney по факту и после тестирования (возможна проверка на вашем сервере)

13 лет назад
Hungry_Hunter
Артем 
39 лет
17 лет в сервисе
Был
3 года назад
41 отзыв

Заявки фрилансеров

Нет заявок фрилансеров