Вот тебе накропал вариант
$alsoDomains - сюда надо вбить все возможные виды зон. Увы иначе никак не определить что это именно зона а не домен из 2х букв
И кто теперь скажет, что регуляркой проще?
PHP:
<?
$alsoDomains = array ('com.ru', 'spb.ru' ); //и так далее
$domainList = array (); //сюда будет складываться результат
//открываем список
$list = file ( 'list.txt' );
foreach ( $list as $item ) {
//подчищаем строку и приводим к нормальному виду
$item = trim ( $item ); //лишние пробелы по краям убрали
$item = strtolower ( $item ); //в нижний регистр
$item = str_replace ( "http://", "", $item ); //пока http:// нам не нужен
$item = rtrim ( $item, " \\/" ); //убирае слэш на конце
//разбиваем имя
$parts = explode ( ".", $item );
if (count ( $parts ) == 2) {
//понятно что это домен
$domainList [] = getFullDomain ( $item );
continue;
}
if (count ( $parts) == 3 && ($parts [0] == 'www' || in_array ( getJoinedZone ( $parts ), $alsoDomains ))) {
//домен типа www.domain.com и domain.com.ru
$domainList [] = getFullDomain ( $item );
continue;
}
if (count ( $parts ) == 4 && $parts [0] == 'www' && in_array ( getJoinedZone ( $parts ), $alsoDomains)) {
//домен типа www.domain.com.ru
$domainList [] = getFullDomain ( $item );
continue;
}
}
//пишем вывод в файл
file_put_contents ( 'result.txt', join ( "\n", $domainList ) );
function getFullDomain($item) {
return 'http://' . $item . '/'; //ранее убранный слэш и http://
}
//скеиваем 1и 2й уровень
function getJoinedZone($parts) {
$count=count($parts);
$joinedZone=$parts[$count-2].'.'.$parts[$count-1];
return $joinedZone;
}
?>
$alsoDomains - сюда надо вбить все возможные виды зон. Увы иначе никак не определить что это именно зона а не домен из 2х букв
И кто теперь скажет, что регуляркой проще?