взимане на домейн от email адрес

kWo_2

Registered
Как можеше да се вземе домейна от email адрес

Примерно:

pari@gmail.com - > gmail.com
problemi@abv.bg - > abv.bg

и съответно отделно, ако може да изведа от

pari@gmail.com - > pari
problemi@abv.bg - > problemi
 
Ето спред мен, по-лесен начин
Код:
<?
$email="pari@gmail.com";

$domain=preg_replace("/(.*?)\@/i", "", $email);
$email=preg_replace("/\@(.*)/i", "", $email);

echo "Домеин - $domain<br />";
echo "Имейл - $email<br />";
?>
 
И двете работят, но да попитам с кое е по-удачно да се прави
explode или preg_replace :)
 
kWo_2 каза:
И двете работят, но да попитам с кое е по-удачно да се прави
explode или preg_replace :)

Регулярния израз безспорно е по добър! За това preg_replace ;)
 
По-удобно и по-лесно е с регулярните изрази...
@kulov можеш да ползваш един израз:
Код:
$email = "problemi@abv.bg";
preg_match("/(.*)\@(.*)/",$email,$tu_parts);
echo "user: ".$tu_parts[1];
echo " domain: ".$tu_parts[2];
 
kWo_2 каза:
Как можеше да се вземе домейна от email адрес

Примерно:

pari@gmail.com - > gmail.com
problemi@abv.bg - > abv.bg

и съответно отделно, ако може да изведа от

pari@gmail.com - > pari
problemi@abv.bg - > problemi

ако данните ти идват от формуляр или от някъде от където не си сигурен дали ще получиш точно това което очакваш (тоест мейл адрес):

1. с регулярен израз проверяваш дали е мейл.
2. ако е мейл:

Код:
$email = 'username@domain.com';
list($username,$domain) = split("@",$email);
 
За какво са му регулярни изрази в случая ... :) Най-удачният начин е
Код:
$domain = end(explode("@", $email));
Един ред код никакви регулярни, никви лудници ...
 
idevbg каза:
За какво са му регулярни изрази в случая ... :) Най-удачният начин е
Код:
$domain = end(explode("@", $email));
Един ред код никакви регулярни, никви лудници ...

Написах защо е нужен регулярен израз, но пак ще го напиша.

Регулярният израз е защото не знам от къде идват данните. Приемам, че мога да получа всичко. Следователно се подсигурявам, като проверявам дали полученото прилича на мейл адрес.

Ако има вид на мейл адрес, то тогава разделям стринга на две части със split(). Тази функция в случая е по-удобна от explode(). След това използвам list(). Също много удобна функция с която в случая връщам като резултат и двете условия които е поискал човека:
- променливата $username - връща името преди @
- променливата $domain - връща частта след @, т.е. домейна

Ако няма вид на мейл адрес не правя нищо (т.е или не изпълнявам останалата част от скрипта или вземам мерки да работи коректно). Тази проверка дава възможност да се изведе на екрана съобщение, че това не е мейл адрес (ако има нужда от такова съобщение)

В заключение за да те подразня мога да кажа, че твоя код не е 'най-удачния'.

Поздрави :)
 

Горе