Willkommen in der Webstatt
User-1 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?
User-2 am 15.04.06 13:53

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

User-1 am 15.04.06 14:05

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

?!?!?!?!

User-2 am 15.04.06 14:07

xyz-48n ist doch aber klar, warum das nicht geht?!

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

User-1 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?!

User-3 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
?>

User-1 am 15.04.06 14:24

Ist mir zu kompliziert. :rolleyes:

User-3 am 15.04.06 14:26

hab editiert

User-1 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: @xyz-72: Funzt auch net!

User-3 am 15.04.06 14:35

zeig mal nochmal deinen code jetzt mit strpos ;)

User-1 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. :(

User-3 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...

User-1 am 15.04.06 14:52

Funzt immer noch nicht.

User-1 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(

User-1 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?

User-1 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