Webstatt.org - Community seit 2006 - 2012 (2024?)

URL in Array überprüfen

user-173
15.04.2006 11:33

Hallo!

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

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'zwinkern;
?>


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

Abi 2oo7
Avatar user-325
15.04.2006 11:53

Vielleicht solltest du mal die Parameter bei ereg() tauschen frech

PHP spricht hebräisch. lächeln
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM
user-173
15.04.2006 12:05

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

?!?!?!?!

Abi 2oo7
Avatar user-325
15.04.2006 12:07

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

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

PHP spricht hebräisch. lächeln
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM
user-173
15.04.2006 12: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?!

Abi 2oo7
Avatar user-182
15.04.2006 12:24

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

// 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
?>

Seid ihr auch schon wix'r? xD
user-173
15.04.2006 12:24

Ist mir zu kompliziert. :rolleyes:

Abi 2oo7
Avatar user-182
15.04.2006 12:26

hab editiert

Seid ihr auch schon wix'r? xD
user-173
15.04.2006 12: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!

Abi 2oo7
Avatar user-182
15.04.2006 12:35

zeig mal nochmal deinen code jetzt mit strpos zwinkern

Seid ihr auch schon wix'r? xD
user-173
15.04.2006 12:36

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

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

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

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

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


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


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


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


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

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. traurig

Abi 2oo7
Avatar user-182
15.04.2006 12:47

grml erdo...guck mal genau meinen code an zwinkern

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

Seid ihr auch schon wix'r? xD
user-173
15.04.2006 12:52

Funzt immer noch nicht.

Abi 2oo7
user-173
15.04.2006 13: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'zwinkern;
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(

Abi 2oo7
user-173
15.04.2006 13:55

Und noch ein Post. Fettes Grinsen

<?php
function checkVar ($type) {
$files = file ('vars.txt'zwinkern;
$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'zwinkern {
return $array[1];
} else if ($type == 'title'zwinkern {
return $array[2];
}
}
}
return 'error';
}

echo checkVar ('title'zwinkern;
?>


Jetzt bekomme ich immer 'news' ausgegeben. Wieso?

Abi 2oo7
user-173
15.04.2006 14:05

Habs geschafft!!!

Abi 2oo7