| 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: 17 let
|
|||
0