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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подстоновка строки к строке полученной через $_POS, К строке в начало подставить текст 
:(
    Опции темы
TWoVKP
Дата 21.2.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Такая вот проблема, через форму получаю в скрипт обработчик - адрес сайта ($_POST), юзер может написать адрес сайта по разному, ну например:

http://www.test.com

или

https://www.test.com

или

www.test.com

или просто

test.com

ну вообшем надо проверить что именно ввёл юзер и если адрес введён таким образом: test.com, то надо впереди подставить - http://www. чтобы получился полный адрес сайта - http://www.test.com!

Как такое можно реализовать, может кто сталкивался!!! Желательно на примере  smile  smile  smile 

Буду очень благодарен за любую помошь!  smile 
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

Так решил задачу:

$web_site - переменная хранит адрес полученный их формы

Код

        //получить имя хоста из URL
    preg_match("/^(http:\/\/)?([^\/]+)/i",$web_site, $matches);
    $host = $matches[2];
    // получить два последних сегмента имени хоста
    preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
    $web_site = "http://www.".$matches[0]."\n";



Может кому пригодится!
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Решение конечно не самое лучшее, вот если например юзер захочет мне послать ссылку на свой сайт уже сразу на страницу с контактной инфой (например www.test.ru/blcoks/contact.php), то всё равно попадаешь на индексную страницу а то есть на - http://www.test.ru


Подправте скрипт кто может, что бы было всё как надо, то есть в концовке ничего не обрезалось, а только в начале строки при отсутствие "http://www." подставлялось что нужно, ну например - http://www. или же только http:// если юзер уже ввёл www
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



А почему бы просто не проверить, являются ли первые 7 символов строкой "http://"?

Это сообщение отредактировал(а) Ипатьев - 22.2.2010, 02:00
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ипатьев

Ну тогда уж надо проверять первые 11 символов, юзер же может ввести адрес и без www.
А какой функцией можно сделать проверку первых n символов???

А вообще вариант на мой взгляд не совсем лучший, допусти что юзер вводит адрес без всяких http://www., тогда по логике надо в начале просто подставить необходимый текст, в нашем случаии http://www., а что если юзер вместо этого внчале введёт какую-нибудь абракадабру например - kjhjjh.test.ru, скажем забыл переключить раскладку клавы, ну или спецом так сделал то тогда наша проверка обнаружит что вначале нету необходимых символов и просто спереди их подставит и мы в итоге получим адресс - http://www. kjhjjh.test.ru
PM MAIL   Вверх
skyboy
Дата 22.2.2010, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(TWoVKP @  22.2.2010,  08:22 Найти цитируемый пост)
А какой функцией можно сделать проверку первых n символов???

substr
Цитата(TWoVKP @  22.2.2010,  08:22 Найти цитируемый пост)
а что если юзер вместо этого внчале введёт какую-нибудь абракадабру

а что, если "юзер введет" вообще не существующий адрес сайта? каким образом можно по введенному "fake.org" получить необходимый "test.com"?
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



skyboy

нет я в смысле что если вместо http://www. будет введён kjhjjh. то тогда вся проверка была скажем так не еффективной, то есть юзер хотел ввести http://www.test.ru а ввёл по ошибке kjhjjh.test.ru, тогда проверка проверит строку и не обнаружит таким http://www. и просто спереди подставит

Например мой вариант решения этой задачи справится с этим, и точно определит адресс, даже если было введено  kjhjjh.test.ru получу в итоге http://www.test.ru

Проблема ы моём решении заключается в том что, если вдруг юзер введёт адрес test.ru/contackts.php, скажем так чтобы я сразу мог посмотреть контактную инфу, то я в итого получу следующий адрес http://www.test.ru, то есть уже без ссылки на нужную страницу, а сразу на индексную

Это сообщение отредактировал(а) TWoVKP - 22.2.2010, 09:46
PM MAIL   Вверх
skyboy
Дата 22.2.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(TWoVKP @  22.2.2010,  08:40 Найти цитируемый пост)
даже если было введено  kjhjjh.test.ru получу в итоге http://www.test.ru

а если сайт как раз на поддомене и находится? получить вместо "somtesite.ucoz.net" сайт платформы "ucoz.net" - это то, что и ожидается? о_0 т.е. maps.google.com и google.com - одно и то же? неожиданно.
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Решил проблему ещё проще, сначала проверяю полученный адрес до первой встречающейся точки в строке, будь то www. или http://www. или вообще будь там абракадабра и кладу результат в переменную, потом переменную проверяю совпадает ли она с www или http://www и если нет то просто подставляю в начало.

Вообшем вот пример:

Код

    $prob = strtok ($web_site, ".");
    echo $prob."<br/>";    
    if($prob != "www" && $prob != "http://www")
    {
        $web_site = "http://www.".$web_site;
        echo $web_site;
        echo "<br/>";
    }
    if($prob == "www")
    {
        $web_site = "http://".$web_site;
        echo $web_site;
        echo "<br/>";
    }


Считаю что тема исчерпана!!!

Добавлено @ 11:23
skyboy

А как с этим примером??? Так покатит???
И рефссылка остаётся неизменной!!!


Хотелось бы критику услышать на на этот способ решения!


Это сообщение отредактировал(а) TWoVKP - 22.2.2010, 11:24
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 13:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



не понимаю, зачем насильно подставлять www
PM MAIL   Вверх
IgorIV
Дата 22.2.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ипатьев 

Да я могу коротко объяснить, вот например юзер послал мне письмо и ввёл мне свой адрес сайта через форму, письма я получаю пргогой The BAT, всем наверное известная, ну так вот если адрес сайта присылается как test.ru, без всяких www или http:// то прога выдаёт ошибку и даже браузер не стартует, а вот если пришло как http://www.test.ru то всё пучком, вот только и для этого я и старался. Не знаю на счёт других почтовых клиентов, но с The BAT v.4.1.11 такая вот история.

Просто хотел чтобы уж если письмо приходило и я его открывал с этой прогой - то чтобы уж всё пучком работало!

Вот в принципе и весь смысл!

Добавлено через 2 минуты и 55 секунд
IgorIV 

ХМ..., интересно, об этом и не подумал, придётся кое-что подправить

Спасибо за подсказку smile 
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Вы очень невнимательны.
Прочтите мое сообщение, на которое вы потрудились ответить, еще раз.
Подсказка: про http:// там ничего нет. там написано другое слово
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ипатьев 


Да внимательный я, заметил что речб ведётся о www а не о http://
ну просто как то хочется чтобы уже было всё в идеале!
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Для того, чтобы сделать идеально, надо понимать, что такое идеал.
А если познания в предмете не очень велики, стремление к идеалу приведет к прямо противоположным результатам
Что мы наглядно можем наблюдать в данном топике smile
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 17:56 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да это понятно, но к идеалу всегда нужно стремиться, а вот только если чел ничего толком сам не может предложить а только чужие идеи и решение покритиковать способен, то тут об идеале речь вообще не может идти, не только о профессиональном но и как о человеке. smile  smile  smile 

Раз такой умный взял бы и предложил путёвое решение, или сам на такое не способен, способен только наверное только языком почесать!!!  smile 

Или ты живёшь по принципу: "Есть два мнения: мое и другое ошибочное!"

Что мы в данном топике и видим, чел ничего толкого сам предложит не может, а вот чужие идеи (у которого своих ну просто нет), всегда готов засрать!

Таковы реали, взгляни правде в глаза, или что правда глаза колит!

 smile 



Это сообщение отредактировал(а) TWoVKP - 22.2.2010, 18:03
PM MAIL   Вверх
skyboy
Дата 22.2.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(TWoVKP @  22.2.2010,  16:56 Найти цитируемый пост)
аз такой умный взял бы и предложил путёвое решение

тебе и предлагали. 4 пост темы. проверить первые 7 символов на соответствие "http://". если нет такого - добавить впереди строки.
хотя лично я бы искал "://", чтоб пропустить "https://" ссылки. хотя, в таком случае, прошли бы и "ftp://"-ссылки. но использовать регулярки ради такой простой задачи неохота.
PM MAIL   Вверх
Ипатьев
Дата 22.2.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Мне кажется, что выступления в таком тоне недопустимы на профессиональном форуме.
Хамство и переход на личности не должны оставаться безнаказанными.
Но в первую очередь конечно - эти поучительные интонации.

Это сообщение отредактировал(а) Ипатьев - 22.2.2010, 19:14
PM MAIL   Вверх
TWoVKP
Дата 22.2.2010, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



skyboy

Не ну это понятно что первые символы проверять надо, до этого в приципе каждый бы додумался что проверять надо, а вот как это на практике реализовать, не все же могут на php отлично кодить, для этого и сущестсвуют форумы чтобы на них обсуждать и вместе пытаться найти подходящее решение, а не выяснять личные отношения, этого негатива и в реальной жизни хватает. Я ничего не имею против - Ипатьев, но раз уж критикует так пусть хоть какую то умную мысль на тему топика выскажет, иль какой пример покажет раз уж он "идеал" в php. А судить то каждый горазд!


Ипатьев

Раз уж выступления в таком тоне недопустимы на профессиональном форуме и необходимо не оставлять безнаказанным - то можно в принципе и так, только что это изменит????
На личности вроде не старался переходить и никогда этого не делаю до тех пор пока не встречаю обратного! Извиняюсь, если затронул "собственное Я".


Да ладно хватит уже одно да потому, лучше посоветуйте как проблему правильно решить, то что необходима проверка символов это и дураку понятно, как на php решить задачу правильно, на примере было бы лучше всего  smile 
PM MAIL   Вверх
sTa1kEr
Дата 22.2.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

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



TWoVKP, для начала, что бы решить эту задачу правильно, вам нужно внимательно прочитать что такое URL  и навсегда запомнить, что http://example.com и http://www.example.com это два совершенно разных URL, указывающих на совершенно разные ресурсы в интернете. 

После чего задача элементарно решается способом предложенным skyboy и функцией substr

Код

if (substr($url, 0, 7) != 'http://' && substr($url, 0, 8) != 'https://') {
    $url = 'http://'.$url;
}


Это сообщение отредактировал(а) sTa1kEr - 22.2.2010, 22:56
PM MAIL   Вверх
IZ@TOP
Дата 25.2.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



TWoVKP, вообще-то, Ипатьев и предложил единственно простое и верное решение для Вашего случая.
На форум приходят обсуждать вопросы связанные с PHP - это верное. Сюда приходят в надежде разрешить проблему и понять где могли ошибиться или в поисках алгоритма, лучшего варианта решения проблемы. Но сюда не заходят для справки по функциям, для этого есть php.net.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Nigel
Дата 25.2.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


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

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



Любителям рег. выражений (подставляется http:// вначале).
Код

echo preg_replace_callback("~(http:\/\/)?(.*)~i",
    create_function(
        '$m',
        'return empty($m[1]) ? "http://" . $m[2] : $m[1] . $m[2];'
    ),
    "test.com", 1
);

Кому надо проверку на www еще, подправьте под себя сами smile 
PM MAIL   Вверх
IZ@TOP
Дата 26.2.2010, 15:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



Я бы за такой код убивал на месте.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Nigel
Дата 26.2.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


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

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



изатоп такой изатоп
PM MAIL   Вверх
IZ@TOP
Дата 27.2.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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




M
IZ@TOP
Не флудим
Сбежавшим из лепрозория просьба вернуться обратно.



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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