Willkommen in der Webstatt Zum Webstatt Blog und Stories
Erdo am 15.04.06 13:33

Hallo!

<?php
$header = array (
'main=news' => array('header' => 1, 'title' => 'news'));

function getVars ($array, $x) {
foreach ($array as $p=>$value) {
if (ereg($_SERVER['QUERY_STRING'], $p)) {
return $array[$p][$x];
}
}
return $x;
}

echo getVars ($header, 'header');
?>


Nun rufe ich die Funktion auf.
Wenn die URL nach dem ? auch gleich "main=news" ist, wird 1 ausgegeben. Allerdings, sobald in der URL noch ein &newsid=1 vorkommt, wird nicht mehr 1 ausgegeben, weil eben die URL nicht mehr genauso ist. Ich dachte immer, dass könnte ich mit ereg() abfangen, aber dem ist nicht so.

Wieso?

Gruß,
Erdi

netcup.de Warum gibt es hier Werbung?
Thiemm Thiemm am 15.04.06 13:53

Vielleicht solltest du mal die Parameter bei ereg() tauschen :P

Erdo am 15.04.06 14:05

Nee, das ist doch richtig rum so. Ich such doch die URL QUERY_STRING im Array $p.

?!?!?!?!

Thiemm Thiemm am 15.04.06 14:07

Dann ist doch aber klar, warum das nicht geht?!

Wie soll er denn "main=news&newsid=1" in "main=news" finden?

Erdo am 15.04.06 14:10

Bei ereg() kann der doch gucken, ob QUERY_STRING *mindestens* da drinn ist. Dafür habe ich doch ereg() genommen. Sonst hätte ich doch einfach == nehmen können?!

Franky Franky am 15.04.06 14:24

was anderes: benutz lieber preg_match() statt ereg(), ist 1. schneller und 2. neuer ;)

// was du willst einfach gucken ob <das> in <dem> drin ist?
Dafür benutz man strpos():
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}

// We can search for the character, ignoring anything before the offset
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, not 0
?>

Erdo am 15.04.06 14:24

Ist mir zu kompliziert. :rolleyes:

Franky Franky am 15.04.06 14:26

hab editiert

Erdo am 15.04.06 14:27

Ja, ich will gucken, ob $QUERY_STRING in $headers vorkommt. Wenns vorkommt, dann will ich den 2. Array dazu haben!!

Edit: @Franky: Funzt auch net!

Franky Franky am 15.04.06 14:35

zeig mal nochmal deinen code jetzt mit strpos ;)

Erdo am 15.04.06 14:36

<?php
$header = array (
'' => array('header' => 1, 'title' => 'title'),
'main=news' => array('header' => 1, 'title' => 'news'),

'file=1_Damen.l98&action=program' => array('header' => 2, 'title' => 'spielplan'),
'file=1_Damen.l98&action=table' => array('header' => 2, 'title' => 'tabelle'),
'file=1_Damen.l98&action=results' => array('header' => 2, 'title' => 'ergebnisse'),
'file=1_Damen.l98&action=stats' => array('header' => 2, 'title' => 'statistiken'),
'file=1_Damen.l98&action=graph' => array('header' => 2, 'title' => 'fieberkurven'),
'main=1damen' => array('header' => 2, 'title' => 'mannschaft'),

'file=2_Damen.l98&action=program' => array('header' => 2, 'title' => 'spielplan'),
'file=2_Damen.l98&action=table' => array('header' => 2, 'title' => 'tabelle'),
'file=2_Damen.l98&action=results' => array('header' => 2, 'title' => 'ergebnisse'),
'file=2_Damen.l98&action=stats' => array('header' => 2, 'title' => 'statistiken'),
'file=2_Damen.l98&action=graph' => array('header' => 2, 'title' => 'fieberkurven'),

'file=3_Damen.l98&action=program' => array('header' => 2, 'title' => 'spielplan'),
'file=3_Damen.l98&action=table' => array('header' => 2, 'title' => 'tabelle'),
'file=3_Damen.l98&action=results' => array('header' => 2, 'title' => 'ergebnisse'),
'file=3_Damen.l98&action=stats' => array('header' => 2, 'title' => 'statistiken'),
'file=3_Damen.l98&action=graph' => array('header' => 2, 'title' => 'fieberkurven'),
'seite.php?main=trainingszeitens' => array('header' => 2, 'title' => 'trainingszeiten'),
'seite.php?main=player' => array('header' => 2, 'title' => 'mannschaft'),

'main=sportstaetten' => array('header' => 3, 'title' => 'sportstaetten'),
'main=mitglieder' => array('header' => 3, 'title' => 'mitglieder'),
'main=historie' => array('header' => 3, 'title' => 'historie'),
'main=geschaeftsstelle' => array('header' => 3, 'title' => 'geschaeftsstelle'),
'main=clubheim' => array('header' => 3, 'title' => 'clubheim'),
'main=vorstand' => array('header' => 3, 'title' => 'vorstand'),


'main=bildergalerie' => array('header' => 4, 'title' => 'bildergalerie'),


'seite.php?main=trainingszeitenn' => array('header' => 5, 'title' => 'trainingszeiten'),


'seite.php?main=news2&cat=7' => array('header' => 6, 'title' => 'presseartikel'),
'seite.php?main=news2&cat=8' => array('header' => 6, 'title' => 'bundesliganews'),
'seite.php?main=archiv' => array('header' => 6, 'title' => 'archiv'),


'main=fanbeauftragter' => array('header' => 7, 'title' => 'fanbeauftragter'),
'main=fanclub' => array('header' => 7, 'title' => 'fanclub'),
'main=auswaertsfahrten' => array('header' => 7, 'title' => 'auswaertsfahrten'),
'main=foerdergemeinschaft' => array('header' => 7, 'title' => 'foerdergemeinschaft'),
'main=freikarten' => array('header' => 7, 'title' => 'freikarten'),
'main=hallenanschriften' => array('header' => 7, 'title' => 'hallenanschriften')
);

function getVars ($array, $x) {
foreach ($array as $p=>$value) {
if (strpos($p, $_SERVER['QUERY_STRING'])) {
return $array[$p][$x];
}
}
return $x;
}
?>


Bei main=news gibt der mir jetzt presseartikel. :(

Franky Franky am 15.04.06 14:47

grml erdo...guck mal genau meinen code an ;)

z53:
if (strpos($p, $_SERVER['QUERY_STRING']) === true) { das dreifache gleich beachten ;) du willst ja nicht nur prüfen ob der inhalt gleich ist sondern auch der typ...

Erdo am 15.04.06 14:52

Funzt immer noch nicht.

Erdo am 15.04.06 15:25

Ich hab's jetzt mal anders aufgebaut und mit preg_match() versucht, aber es klappt nicht. Wenn QUERY_STRING main=bildergalerie ist, funzt das wohl, aber sobald noch ein &cat=1 an main=bildergalerie dran kommt, funzt das nicht mehr. Und genau *das* will ich ja nicht...

main=news|1|news
main=news2&cat=7|6|presseartikel
main=news2&cat=8|6|bundesliganews
main=archiv|6|archiv
main=bildergalerie|4|bildergalerie


URL|ausgabe für 'header'|ausgabe für 'title'

<?php
function getVars3 ($x) {
$file = file ('vars.txt');
for ($i = 0; $i <= count ($file); $i++) {
$array = explode ('|', $file[$i]);
if (preg_match ('/' . $_SERVER['QUERY_STRING'] . '/i', $array[0], $result)) {
return $array[2];
}
}
return $x;
}
echo getVars3 (1);
?>


X( X(

Erdo am 15.04.06 15:55

Und noch ein Post. :D

<?php
function checkVar ($type) {
$files = file ('vars.txt');
$countQuery = strlen ($_SERVER['QUERY_STRING']);
foreach ($files as $file) {
$array = explode ('|', $file);
$countArray = strlen($array[0]);
$newQuery = substr ($_SERVER['QUERY_STRING'], 0, $countArray);
if ($array[0] == $newQuery) {
if ($type == 'header') {
return $array[1];
} else if ($type == 'title') {
return $array[2];
}
}
}
return 'error';
}

echo checkVar ('title');
?>


Jetzt bekomme ich immer 'news' ausgegeben. Wieso?

Erdo am 15.04.06 16:05

Habs geschafft!!!

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt