Piszę sobie swój własny CMS (dostosowany do moich potrzeb i z możliwością rozbudowy).
Do wyświetlenia dynamicznych metatagów mam tabelę w MySQL która zawiera 5 kolumn:
MOD|link|meta_key/desc/title|
MOD to po prostu te rozszerzenia które będą ładowane w body (mod od materiałów statycznych, downloadu, newsów itp)
Wartość MOD jest już znana prawie na początku głownego pliku index więc bez problemu go przekaże funkcji wyświetlającej meta, drugi parametr - link - to ostatnia wartość z adresu URL.
URL wyglądają tak:
http://jakasstrona.pl/index.php?page=jakas...p;content=jakis
To adres przykładowy. pierwszy parametr (page) jest i występuje zawsze - niezmienny, pozostałe zależą od MOD'a.
Dodatkowo czasem występuje paginacja, wtedy ostatni parametr to p={numerek} .wtedy chce go odrzucić i wziąć wartość poprzedzającą go.
Napisałem sobie funkcje.
(Korzysta z dwóch dodatkowych parametrów - $page = $_GET['page']; którą znam zawsze, i $rewrite którą też znam zawsze, pobierana jest z bazy z tabeli konfiguracji CMS, informuje czy mają być włączone krótkie url'e czy nie... są w formacie np: http://jakasstrona.pl/jeden-dwa-trzy.html , lub jeden-dwa-p_1 dla paginacji - wszystko działa dobrze i jak trzeba)
Napisałem sobie funkcję (komenty po angielsku, zapewne z błędami ale tak jest uniwersalnie) :
<?php function zwroc_ostatnie() { // get $rewrite & $page from other functions of my CMS index.php , global page_id is the resu
lt of function. //count url _GET elements and decrement by 1 (because of arrays indexed from 0 not 1) $place = $count - 1; //get all variables from addres (& is separator) -> type=variable //if count = set $page_id to cms_daf_meta, else if 1 set is as $page which is dafa
ult for whole CMS else chk rewrite if($count==0) {$page_id = 'cms_daf_meta';} elseif($count==1) {$page_id = $page;} else{ //if rewrite = 0 (no mod_rertite url's used) set page_id to last argument from array $adres if($rewrite==0) { $page_id = $adres[$place]; //chk if last arg in url is p= decrese $place by 1 to show value prev value esle j
ust get last value $var = "p="; $page_id = $adres[$place-1]; $page_id = $adres_no_p[1]; } else { $page_id = $adres_no_p[1]; } }else{ //if $rewrite = 1 (mod_rewrite url's used) get 1st (0) arg from array $adres (it'll give whole adress) //explode it by '-' because this is a separator in my url's then just get tlhe last one ($adres_rewr[$place]) $adr = $adres['0']; $page_id = $adres_rewr[$place]; //check if last arg is p_ and if it is, decrese $place by 1) and set page_id to it $var = "p_"; $page_id = $adres_rewr[$place-1]; } else { //if last arg isn't p_ then cut last 5 chars (.html) and set page_id } } } //just for check, dafault comment it with // }?>
Wszystko jest tak jak powinno - otrzymuję to co chce ... ale to kilka linijek kodu jednak jest.
I tu nasuwa się pytanie:
Jest jakiś prosty sposób na wyciągnięcie ostatniej wartości z $_GET nie znając tak na prawdę wartości które się tam pojawią ?
Można zliczyć elementy $_GET , można "wydrukować" tą tablicę (print_r) ... ale czy są jakieś inne ciekawe funkcje, np ta o którą pytam ?

Jeśli nie - cóż - funkcja którą napisałem spisuje się dobrze, ale zawsze miło sie dokształcić
