[PHP] In_array zoeken op wildcard

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • .GoO
  • Registratie: September 2001
  • Laatst online: 27-09 00:53
Op een website gebruik ik de index.php om te bepalen naar welke pagina de bezoeker moet worden doorgestuurd. Hiervoor gebruik ik de in_array functie om de locatie te bepalen en zo het juiste php bestand in te laden.

Dat werkt in principe prima, maar een nadeel van de in_array is dat hij alleen letterlijk zoekt en geen wildcards toestaat.

Simpel voorbeeldje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
if (end($sef_url) == "") {
    $location="main";
}
elseif(in_array("showimage", $sef_url)) {
    $location="showimage";
}
elseif(in_array("someotherpage", $sef_url)) {
    $location="someotherpage";
}
else {
        $location="main"
}


Dat gaat goed voor http://www.domein.nl/showimage maar bijvoorbeeld http://www.domein.nl/showimages werkt niet en parameters zoals http://www.domein.nl/showimage?imagename=image.jpg ook niet.

Ik wil dus een wildcard gebruiken dat alles met showimage* naar die location gaat en dat ik in het betreffende php script de parameters kan inladen, maar ik kom er niet uit hoe ik dit kan doen. Kan dit überhaupt met in_array of is er een andere/betere manier?

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 11-10 15:59
Met een regex kun je combinaties omzetten.

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 11-10 23:13
Lijkt mij dat je hier veel beter een package als FastRoute voor kan gebruiken, dan hoef je niet zelf in de weer met moeilijke routing regels

[ Voor 2% gewijzigd door naam op 11-03-2016 10:28 . Reden: class => package ]


Acties:
  • 0 Henk 'm!

  • .GoO
  • Registratie: September 2001
  • Laatst online: 27-09 00:53
RedHat schreef op vrijdag 11 maart 2016 @ 10:27:
Met een regex kun je combinaties omzetten.
Kan je dat iets verder toelichten?
naam schreef op vrijdag 11 maart 2016 @ 10:27:
Lijkt mij dat je hier veel beter een package als FastRoute voor kan gebruiken, dan hoef je niet zelf in de weer met moeilijke routing regels
Bedankt voor de tip, ik ga er even naar kijken.

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 11-10 15:59
.GoO schreef op vrijdag 11 maart 2016 @ 10:31:
[...]


Kan je dat iets verder toelichten?
Google maar op regex php dan vind je ontelbare documenten die je op weg helpen.

Je wilt showimagess92345234 omzetten naar showimage en dat kan prima met een regex.

[ Voor 15% gewijzigd door RedHat op 11-03-2016 10:34 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat moet je alleen niet willen. Waarom zou je twee verschillende URLs naar dezelfde content willen hebben? Dat is lastiger onderhouden én heeft nadelen voor Google (want duplicate content). En als het al dan niet hebben van een querystring verschil maakt dan zit de fout in het feit dat je het pad niet zonder querystring parset, niet in het feit dat die querystring überhaupt bestaat...

Ik zou je eigen oplossing met regular expressions zeker af willen raden, kijk inderdaad naar bestaande routers. Routing kan erg complex zijn en als je het niet goed doet krijg je daar later in je site nogal hoofdpijn van.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .GoO
  • Registratie: September 2001
  • Laatst online: 27-09 00:53
NMe schreef op vrijdag 11 maart 2016 @ 10:41:
Dat moet je alleen niet willen. Waarom zou je twee verschillende URLs naar dezelfde content willen hebben? Dat is lastiger onderhouden én heeft nadelen voor Google (want duplicate content). En als het al dan niet hebben van een querystring verschil maakt dan zit de fout in het feit dat je het pad niet zonder querystring parset, niet in het feit dat die querystring überhaupt bestaat...

Ik zou je eigen oplossing met regular expressions zeker af willen raden, kijk inderdaad naar bestaande routers. Routing kan erg complex zijn en als je het niet goed doet krijg je daar later in je site nogal hoofdpijn van.
Ik wil niet twee verschillende URL's naar dezelfde content leiden, ik wil parameters mee kunnen sturen zodat ik die via een GET kan gebruiken op de betreffende pagina. Op de huidige manier vindt hij dan de betreffende pagina niet.

Uiteraard weet ik wat regular expressions zijn, maar dat gaat niet werken met in_array, dan moet ik daar iets anders voor verzinnen.

Ik zal eens kijken naar betere bestaande routers en of die een goed (en op korte termijn haalbaar) alternatief bieden.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.GoO schreef op vrijdag 11 maart 2016 @ 10:47:
[...]

Ik wil niet twee verschillende URL's naar dezelfde content leiden, ik wil parameters mee kunnen sturen zodat ik die via een GET kan gebruiken op de betreffende pagina. Op de huidige manier vindt hij dan de betreffende pagina niet.
Dat zeg ik: als een querystring (of andere parameters ook, trouwens) een probleem zijn, dan zit het parsen van je pad niet goed in elkaar.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Firefly III
  • Registratie: Oktober 2001
  • Niet online

Firefly III

Bedrijfsaccount Firefly III
-

[ Voor 119% gewijzigd door Firefly III op 21-10-2019 09:13 . Reden: Leeg ivm privacy ]

Hulp nodig met Firefly III? ➡️ Gitter ➡️ GitHub ➡️ Mastodon


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Wat is de inhoud van $sef_url ?
- $_SERVER['REQUEST_URI'] ?
- $_SERVER['PATH_INFO'] ?
showimages != showimage, logisch.
Zou showimages niet een pagina met images zijn en showimage 1 image?
Je $sef_url is gewoon fout
En wat als ik "?imagename=../.htaccess" invoer?

[ Voor 3% gewijzigd door DJMaze op 11-03-2016 12:19 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • .GoO
  • Registratie: September 2001
  • Laatst online: 27-09 00:53
JCE schreef op vrijdag 11 maart 2016 @ 10:58:
Je pakt het probleem verkeerd aan. Dit moet je niet zelf willen oplossen, en zeker niet op deze manier. Pak inderdaad een simpele router en gebruik die.
Oké, de boodschap is duidelijk :+

Iemand een suggestie voor een eenvoudige (zo begrijpelijk mogelijk) en snelle PHP router waarin ik eenvoudig routes kan definiëren?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je bedoelt een suggestie zoals die van naam in "[PHP] In_array zoeken op wildcard"?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1