|
feb
27
|
|
Hosszabb kimaradás után ismét van egy kevés időm, amikor a WebPillangóval is tudok foglalkozni. Sajnálom, a kissebb-nagyobb szüneteket, nem szánédkosak. A bejegyzés azért született, mert ismét azon találtam magam, hogy dinamikusan ki kell cseréljek egy vagy több változót a _GET szuperglobális tömbben. A mellékelt függvény kicseréli és kiírja a kívánt eredményt. Az első paraméterben azt adjuk meg, hogy melyik változót szeretnénk cserélni a második paraméter értékére. Mindkét bemeneti változó lehet karakterlánc, de az első mindenképpen az kell legyen. Amennyiben az első paraméter üres, a függvény listázza a formázott modosítatlan _GET tömböt. Ha nem létezik a helyettesítésre szoruló változó, akkor azt a _GET tömb utolsó elemeként beszúrja a függvény a paraméterként átadott értékkel.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| < ?php
function parseGETintoString($variable, $newValue){
if ( empty($_GET) ) return; // ha nincsenek elemei a _GETnek, nem fut tovább a függvény
$isFirstVar = true; // segédváltozó
$wasChanged = false; // segédváltozó
foreach( $_GET as $var => $varVal){
if ($isFirstVar){ // csatolási operátor teszt
echo "?";
$isFirstVar = false;
}else{
echo "&";
}
echo $var."=";
if ( strcmp($var, $variable) == 0 ){ // cserélésre szoruló változó teszt
echo $newValue;
$wasChanged = true;
}else{
echo $varVal;
}
}
if ( !empty($variable) && !$wasChanged ){ // ha a változó nem szerepel, de meg van határozva
echo "&".$variable."=".$newValue;
}
}
?> |
Köszönöm BlackYnek a második változatot:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| < ?php
function parseGETintostring(Array $newData, $fullUrl = false) {
static $urlParts = array();
if(!$urlParts) {
$urlParts = parse_url($_SERVER['REQUEST_URI']);
}
$params = array_merge($_GET, $newData);
$string = '';
foreach($params as $field => $value) {
$string .= $field . '=' . htmlentities(urlencode($value));
$string .= "&";
}
$string = '?' . substr($string, 0, strlen($string) - 5); /* Levágjuk a végérol az utolsó &-ot */
if($fullUrl) {
return $urlParts['path'] . $string;
} else {
return $string;
}
}
?> |
Ezek az ikonok ún. közösségi könyvjelző oldalakra mutatnak, ahol meg lehet osztani másokkal is amit fontosnak találsz.
 Loading ...
|
7 hozzaszólás a "parseGETintoString PHP függvény" bejegyzéshez.
Szvsz. jobb lenne, ha stringet adna vissza a közvetlen kiírás helyett. Továbbá ha inkább tömb paramétert várna (így aztán a végleges tömböt egy sima array_merge($_GET, $ujtomb)-el állíthazná elő…). Általánosabb célú lenne.
BlackY
Teljesen egyet értek veled. Hogy ne kiírja, hanem egy karakterláncként visszaadja az eredményt, csupán egy parányi átalakítást igényel. Arra, hogy tömbök legyenek a bemenetek valójában gondoltam, de mivel én ezt a kódot használtam és időm sem igen akadt átírni (a kommenteket leszámítva), nem valósult meg az ötlet. Az array_merge() nem jutott eszembe 
Ha esetleg van időd/kedved megírni az elképzelt kódot, szívesen látnám az oldalon 
A 2. kód nem jó.
Kipróbáltam erre a tömbre:
$a = array(”egy”=>”1″,”ketto”=>”2″,”otvenegy”=>”51″);
/tupacko.php?egy=1&ketto=2&otveneg
Ezt a részt:
$string = ‘?’ . substr($string, 0, strlen($string) - 5);
Átírnám erre:
$string = ‘?’ . substr($string, 0, -1);
És már megy is rendesen 
Jó volt az eredetileg is, csak a wordpress csúnya, gonosz és buta és az _andjel_amp; szöveget kicserélte _andjel_-re. (És mivel úgy szabványos, ne a substr-inget paraméterezd át, inkább a $string .= ‘_andjel_’; sort javítsd $string .= ‘_andjel_amp;’; -ra.
BlackY
Kijavítottam, nem vettem észre, hogy átcserlélte &-re(inkább az aposztrófokkal volt gondja … első módosításkor rengeteg kérdőjel jelent meg helyette).
És tulajdonképpen ez a script mire is jó? Azt értem mit csinál..De mikor hasznos?
Vannak esetek, hogy megakarsz valtoztatni egy erteket a _GET tombben, pl. oldallapozaskor, de dinamikusan kell tenned azt, mert pl. egy form gettel kuldi le az ertekeket es azok nem szabad elvesszenek lapozaskor.
|
|