Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 30. 10. 2009, 18:02:11 · Upravil/a: Jack06
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: http://example.cz/pokracovani_url http://www.exapmle.com/pokracovani_url http://www.sub.example.eu/pokracovani_url 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 |
#2 · Zasláno: 30. 10. 2009, 18:30:55
skús regulárne výrazi
http://www.regularnivyrazy.info/ |
||
Mikeses Profil * |
#3 · Zasláno: 30. 10. 2009, 18:34:14
zacatek by sel pres strreplace si pohrat :-)
|
||
AM_ Profil |
#4 · Zasláno: 30. 10. 2009, 18:59:37
Mikeses:
jo? a co když stránka bude na https? |
||
Mikeses Profil * |
#5 · Zasláno: 30. 10. 2009, 19:31:20
|
||
AM_ Profil |
#6 · Zasláno: 30. 10. 2009, 21:18:50
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 |
#7 · Zasláno: 31. 10. 2009, 06:48:01 · Upravil/a: Jack06
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 |
#8 · Zasláno: 31. 10. 2009, 10:14:05
//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 |
#9 · Zasláno: 31. 10. 2009, 11:03:56 · Upravil/a: Jack06
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); www.seznam.cz a já bych potřeboval vypsat jen seznam.cz |
||
Časová prodleva: 3 dny
|
|||
miskith Profil |
#10 · Zasláno: 3. 11. 2009, 15:03:51 · Upravil/a: miskith
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 |
#11 · Zasláno: 3. 11. 2009, 15:36:03
<?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 |
#12 · Zasláno: 3. 11. 2009, 15:56:02
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... |
||
Časová prodleva: 14 let
|
0