Autor Zpráva
loap
Profil *
Ahoj, potreboval bych pomoct. Potrebuji zkratit url adresu. Dejme tomu ze mam /moje/kolo/je/hezke/hezke.htm. Potreboval bych nejakym zusobem vybrat vse krome prvniho a poslednich dvou slov. Tedy v priklade bych si predstavoval vysledek jako kolo/je. S tim ze, vsechny "slova" muzou byt jakkoli dlouhe a za kolo/je muzou byt jeste dalsi slova, ktere bych chtel vybrat.
pro pochopeni ukazu jeste jeden priklad:
php/ma/opravdu/mnoho/moznosti/moznosti.htm potrebuju vybrat ma/opravdu/mnoho

Predem dekuji.
loap
Profil *
Tak jsem si s tim zkousel pohrat a vytvoril jsem toto:
$a = explode("/","tady/bude/nejaky/strasne/dlouhy/text");
$soucet = count($a)-2;
for($i=1;$i<$soucet;$i++) echo $a[$i]."/";


Ale tento muj zpusob se mi zda strasne neefektivni a zdlouhavy. Nedal by se nejak zjednodusit? Napriklad pomoci regularnich vyrazu nebo tak?

Predem dekuji.
Nox
Profil
preg_match("/\/?[^\/]*/(([^\/]+\/)*)([^\/]+/[^\/]+\/?)/",$url, $str);
var_dump($str[1]);

Ikdyž to asi není nějak zázračný výraz, když bude těch položek málo, tak to asi nebude moc fungovat
bohyn
Profil
Nox, loap
Da se zjednodusit:
preg_match("~^/?[^/]+/(.*)/[^/]+/[^/]+$~", $url, $str);
var_dump($str[1]);

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: