Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Общие вопросы оптимизации (http://forum.sape.ru/forumdisplay.php?f=33)
-   -   Обрезание URL-ов (http://forum.sape.ru/showthread.php?t=15299)

MrJinx 06.07.2008 21:57

Обрезание URL-ов
 
Столкнулся с такой проблемой. Напарсил сайтов из выдачи, часть из адресов с хвостами (т.е. именно ссылки). Может у кого-то есть готовое решение? Нужно эти хвосты убрать или в отдельный файл записать только адреса самих сайтов.

РегЭкспом по формуле http://[^/]*/ нахожу сами адреса, а вот как сделать формулу, чтобы находило всё, что после них - не додумался.
Я уверен, я не один такой весёлый с такой проблемой - поэтому не жадничайте, если богаты на минисофтинку для этого случая. Что-то выдумывать, когда я уверен, что оно уже есть - не очень-то хочется :)

MadGreen 06.07.2008 22:16

если речь о php то не придумывая велосипеда:
<?php
$url = pathinfo('http://www.sape.ru/1.php');
echo $url['dirname'];
?>

набросал на коленке, но вроде все верно

Ufaweb 06.07.2008 22:17

preg_match('|http://([^/]+)([^"])"|Usi', $ссылка, $куда_скидувать_массив) :)

MadGreen 06.07.2008 22:18

или, если беречь память сервака при большом кол-ве урлов, написать строковыми функциями обрезание по одиночному слешу...
регулярки здесь, имхо, будут более затратными чем pathinfo

Ufaweb 06.07.2008 22:18

Цитата:

Сообщение от MadGreen (Сообщение 191833)
если речь о php то не придумывая велосипеда:
<?php
$url = pathinfo('http://www.sape.ru/1.php');
echo $url['dirname'];
?>

набросал на коленке, но вроде все верно

Это брет - неясно как со спецсимволами (?, например) :) Тогда уж parse_str или parse_url =)

Добавлено через 1 минуту
Цитата:

Сообщение от Ufaweb (Сообщение 191834)
preg_match('|http://([^/]+)([^"])"|Usi', $ссылка, $куда_скидувать_массив) :)

Хотя это тоже смахивает на брет :D

MadGreen 06.07.2008 22:21

Цитата:

Сообщение от Ufaweb (Сообщение 191836)
Это брет - неясно как со спецсимволами (?, например) :) Тогда уж parse_str или parse_url =)

Добавлено через 1 минуту

Хотя это тоже смахивает на брет :D

$url = pathinfo('http://www.sape.ru/1.php?dfsg=dd');
echo $url['dirname'];

что непонятно?

Добавлено через 2 минуты
регулярка кстати косячная

Ufaweb 06.07.2008 22:28

Цитата:

Сообщение от MadGreen (Сообщение 191840)
регулярка кстати косячная

Ну я и говорю - на бред смахивает :D
Спекся за этот день...

MadGreen 06.07.2008 22:30

в общем вариант я написал рабочий, проверил
MrJinx, пользуйся... если конечно захочешь..

MrJinx 06.07.2008 22:54

Цитата:

Сообщение от MadGreen (Сообщение 191835)
или, если беречь память сервака при большом кол-ве урлов, написать строковыми функциями обрезание по одиночному слешу...
регулярки здесь, имхо, будут более затратными чем pathinfo

dirname не покатит, потому что там много ссылок не с главной сразу, а в подкаталогах типа http://site.com/site/site/1.html, в итоге будет выдавать адрес http://site.com/site/site/, а не http://site.com/

Добавлено через 7 минут
ещё варианты? :)

MadGreen 06.07.2008 23:35

а, согласен, тогда вот так:

$url = 'http://site.com/site/site/1.html';
$url = substr($url, 0, strpos($url, '/', 7)+1);
echo $url;

Добавлено через 4 минуты
ну или parse_url на самом деле
только вот массив по любому больше памяти будет выедать...


Часовой пояс GMT +3, время: 04:33.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.