Autor Zpráva
Jack06
Profil
Dobrý den, chtěl bych se zeptat, když budu mít url 3 typů a potřeboval bych z ní dostat jen doménu, jak to udělat: jde mi o to:

url mohou být:



Potřebuji z adresy posílané z formuláře dostat vždy jen to co jsem těď udělal silně.. a všechno před i po smazat..
Jde mi o to chci kontrolovat existenci url v databázi pomocí like %url% , ale aby to bylo efektivní a lidi nepřidávali akorád třeba www. před doménu nebo /dalsi.php za domenu . Děkuji.
denCo
Profil
skús regulárne výrazi
http://www.regularnivyrazy.info/
Mikeses
Profil *
zacatek by sel pres strreplace si pohrat :-)
AM_
Profil
Mikeses:
jo? a co když stránka bude na https?
Mikeses
Profil *
http:// na "" https:// na ""
AM_
Profil
Mikeses:
ale stejně, regulár by na to stačil jeden,
preg_match('~[a-z0-9]+\\://([^/\\?\\#]+)~i', $url, $matches);
echo "domena: {$matches[1]}";

Snad to mám správně oescapované :)
Jack06
Profil
AM:
Mno ještě když zadám www, tak mi to vypíše i to www :-(

Zkusil jsem to takto:
preg_match('~[a-z0-9]+\\://([^/\\?\\#]+)~i', $_POST['weburl'], $matches);  // to tvé a funguje to, jen to www, když tam je tak zůstává
preg_match('@^(?:www.)?([^/]+)@i', "$matches[1]", $matches); // odstraní www


// pak jsem se chtěl zeptat, jestli jde ještě u té url, když by nezadal http://, aby se to přidalo.

Dělám to dobře? děkuji
AM_
Profil
//if (strpos($url, '://') === false) $url = 'http://'.$url;
preg_match('~[a-z0-9]+\\:(www.)?//([^/\\?\\#]+)~i', $url, $matches);
echo "domena: {$matches[2]}";

Otázka je, jestli z toho chceš dostat doménu, jak jsi psal v prvním příspěvku ,nebo i protokol, jak se zdá teď; jinak nemá smysl ho tam přidávat, když ho uživatel nezadá (stačí drobná úprava reguláru, aby byl protokol nepovinný).
Jack06
Profil
AM:
Potřebuji vytáhnout jen tu doménu a příponu.. Do mysql zadávám stránky lidí, a chci, aby tam jeden web mohl být maximálně jednou. Aby si tam jeden člověk nestrčil http://www.example.cz/ a druhej uplně ten samej, jen tam nedá www takže: http://example.cz/

takže vlastně budu mít dvě podmínky.. při kontrole existence v databázi kde budu mít like %web% jestli tam už ten web není a když to tím projde, tak skontrolovat zda zadal [url=http://]http://[/url] před adresu toho svého webu a v případě že ne ji tam doplnit

jinak toto:
preg_match('~[a-z0-9]+\\:(www.)?//([^/\\?\\#]+)~i', $url, $matches);
když do toho vložím http://www.seznam.cz/ tak mi to vypíše
www.seznam.cz

a já bych potřeboval vypsat jen seznam.cz
miskith
Profil
Nevím na kolik to je ideální...například přes funkci (jde i bez funkce):
function web($web)
{
  $web = str_replace("http://", '', $web);
  $web = str_replace("www.", '', $web);
  return $web;
}
AM_
Profil
<?php
  preg_match('~[a-z0-9]+\\://(www.)?([^/\\?\\#]+)~i', $url, $matches);
  echo "domena: {$matches[2]}";
?>

Teď by to mohlo jít, to www jsem tam strčil o pár znaků blbě (patří až za lomítka pochopitelně:)).
Btw, s trochou vlastní iniciativy jsi si toho mohl všimnout.
TFSi
Profil
Nepřipadá Vám použití RegExp to jako jít s kanonem na vrabce?
Zvlášť když na to v PHP existuje celkem šikovná funkce...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0