Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт с автозаменой после определенного символа, как такое осуществить? 
:(
    Опции темы
magg
Дата 7.4.2009, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.5.2007

Репутация: нет
Всего: нет



Собственно САБЖ.
Приведу на примере
есть у меня 100 сайтов
google.com
yahoo.com
...
и нужно во всех сайтах после 'ТОЧКИ' вместо com, org, net вписать RU
помогите, народ  smile 
PM MAIL   Вверх
enof
Дата 7.4.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Код

preg_replace("#com|net|org$#", "ru", $domain);

или
Код

preg_replcae("#\..*$#U", "ru", $domain);


Это сообщение отредактировал(а) enof - 7.4.2009, 02:10
PM MAIL ICQ Skype   Вверх
NLspieler
Дата 7.4.2009, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Я бы сделал бы так:

Код

<?php

// $array - массив с сайтами. 

$array[0] = 'google.com' ;
$array[1] = 'yahoo.net' ;
$array[2] = 'figago.biz' ;
$array[3] = 'site.site.biz' ;
$array[4] = 'site.site.site.com' ;

function ru_domain ($array)
{
    $count = count ($array) ; //Измерить размер массива.
    
    for ($n = 0 ; $n < $count ; $n++) //Обработать каждый элемент массива.
    {
        $explode = explode ('.' , $array[$n]) ;  //Раздилить на массив. Точка - делитель.
        $last_string = count ($explode) - 1 ;
        $explode[$last_string] = 'ru' ;          //Присвоить последнему элементу значение ru
        $array[$n] = implode ('.' , $explode ) ; //Склеить массив. 
    }
    
    return $array ;
}

print_r ( ru_domain ($array) ) ; //Распечатать полученный массив.

?>

PM MAIL   Вверх
magg
Дата 7.4.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.5.2007

Репутация: нет
Всего: нет



спасиб, отписавшимся) .. но ..
а если есть большущий список сайтов, скажем со всемя существующими доменными зонами в WWW, например в .txt файле в таком виде:
site1.com
site2.net
site3.su
site4.cc
site5.org
site6.ua
site7.in
...
...
...
т.е. вбивать все доменные зоны вручную или в масивы все сайты ооочень долго, тому как это можна решить так:
копипастить весь список сайтов в функцыю (например) какую-то и задать, чтобы именно после "." прописывало везде "RU"
Прошу напишите на примере, и не отрывком из скрипта а весь скрипт, как это сделал NLspieler во втором примере (к php не притрагивался очень долго, а решить даную задачку времени в обрез).


Это сообщение отредактировал(а) magg - 7.4.2009, 17:08
PM MAIL   Вверх
enof
Дата 7.4.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Код

$domains = file_get_contents("filename.txt");
preg_replace("#\..*$#Um", ".ru", $domains);


Это сообщение отредактировал(а) enof - 7.4.2009, 17:21
PM MAIL ICQ Skype   Вверх
NLspieler
Дата 7.4.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



enof, твой вариант почуму-то не работает.

Немного улучшил код. Теперь он может доставать названия сайтов из файла.

Код

<?php

$content = file_get_contents("filename.txt");

$array = explode ("\n" , $content) ;  //Разделить содержимое файла на массив. Перенос строки - разделитель.

function ru_domain ($array)
{
    $count = count ($array) ; //Измерить размер массива.
    
    for ($n = 0 ; $n < $count ; $n++) //Обработать каждый элемент массива.
    {
        $explode = explode ('.' , $array[$n]) ;  //Раздилить на массив. Точка - делитель.
        $last_string = count ($explode) - 1 ;
        $explode[$last_string] = 'ru' ;          //Присвоить последнему элементу значение ru
        $array[$n] = implode ('.' , $explode ) ; //Склеить массив. 
    }
    
    return $array ;
}

print_r ( ru_domain ($array) ) ; //Распечатать полученный массив.

?>


Могу так же сделать, что бы полученные результаты складывались в новый файл.

Это сообщение отредактировал(а) NLspieler - 7.4.2009, 17:36
PM MAIL   Вверх
enof
Дата 7.4.2009, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



domains.txt
Код

site1.com
site2.net
site3.su
site4.cc
site5.org
site6.ua

index.php
Код

<?php
$domains = file_get_contents("domains.txt");
echo preg_replace("#\..*$#Um", ".ru", $domains);

Вывод:
Код

site1.ru
site2.ru
site3.ru
site4.ru
site5.ru
site6.ru

Все работает.

Это сообщение отредактировал(а) enof - 7.4.2009, 17:38
PM MAIL ICQ Skype   Вверх
NLspieler
Дата 7.4.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



И правда работает. 

Вот только если домен сайта будет таким:
site.domain.com ,
то в результате будет получено site.ru .
У меня же результат станет site.domain.ru

Что именно требуется топикстартеру?

И вообще, мне тут вдруг очень интересно стало, а зачем это все? Зачем нужны такие домено-преобразования?

Это сообщение отредактировал(а) NLspieler - 7.4.2009, 18:04
PM MAIL   Вверх
magg
Дата 7.4.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.5.2007

Репутация: нет
Всего: нет



Спасибо, ребята! Не проверял еще, но думаю, всё верно.
NLspieler, домены тут не причем smile просто привёл пример на них.
PM MAIL   Вверх
NLspieler
Дата 7.4.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 1
Всего: 19



Да незачто!
Интересно все - таки, какая у тебя конкретная задача. 
Возможно описанные нами решения совсем не подходят
PM MAIL   Вверх
enof
Дата 7.4.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Цитата(NLspieler @  7.4.2009,  18:55 Найти цитируемый пост)

Вот только если домен сайта будет таким:
site.domain.com ,
то в результате будет получено site.ru .
У меня же результат станет site.domain.ru

Исправить - 2 секунды : #\.[^.]*$#m
Имхо, извращение писать способом, предложенным тобой, когда с помощью рв задача решается в одну строку.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.