Halllo,

ik ben totaal niet technisch, maar heb 2 regular expressions nodig om een verwijzing te doen naar een specifiek type pagina van een website. Eenmalig eigenlijk. Ik hoop dat ik hier aan het goede adres ben en iemand kan helpen.

De structuur van de site is als volgt:

1. domein: ww.domein.nl
2. Categorie: ww.domein.nl/categorie.html waarbij er verschillende soorten categorieën zijn, heren, dames, kids om maar wat te noemen
3. Subcategorie: ww.domein.nl/categorie/subcategorie.html waarbij er weer verschillende soorten subcategorieën zijn. Truien, broeken etc

Ik zoek dus als eerste een regular expression waarmee ik alle pagina's "vang" bij 2 (op categorieniveau) EN alle pagina's bij 3 (subcategorieniveau). En dat indien mogelijk in 1 regular expression. Als dat onmogelijk is dan in 2.

En nog een niveau dieper is het als volgt:

4. Product dat direct onder de categorie hangt: ww.domein.nl/categorie/productnaam-roze.html
5. Product dat onder de subcategorie hangt: ww.domein.nl/categorie/subcategorie/productnaam-roze.html
Voor 4 en 5, dus alle productpagina's, zoek ik ook een regular expression. Maar dat kunnen dus honderden verschillende producten zijn met uiteenlopende namen zonder logica.

Ik hoop dat dit duidelijk is verwoord en dat iemand hierbij kan assisteren.

Mijn dank is groot!
Roy
O, verrek, nou zie ik 'm. Ik had alleen die bij 5 gezien. Tsja, dan wordt het lastig, en zul je toch een lookup in de database moeten doen (is het product of een categorie). Dan is jouw oplossing net zo handig (ivm de opmerking over een "verwijzing" + reg-ex had ik het vermoeden dat het misschien in een mod_rewrite achtige constructie moest komen, en dan is een reg-ex wel handig).

@Roy: het is 3x hetzelfde stukje code (preg_match()), alleen aan de hand van het format van de URL geeft ie een array met 2, 3, of 4 "matches" terug (waarbij de 1e - nummer 0 - altijd de volledige match is).
Dank jullie beiden. Ik ga het lezen en proberen te begrijpen. Ik gebruik het om een heatmap te maken voor een categoriepagina en een prodictpagina in een saas programma en moet daar simpelweg 1 veld invullen. zie http://prntscr.com/haqe8f

Dank!
Waarom moeten we dan Japanse vrouwen gaan daten?

[size=xsmall]Toevoeging op 15/11/2017 12:25:41:[/size]

maw: je vindt zelf waarschijnlijk je linkjes naar externe sites heel handig, maar die staan vol reclame en andere rotzooi.

Je kunt ook je vraag slimmer stellen.

Als je in je openingspost gewoon het hele verhaal vertelt, krijg je geen oplossingen waar je niets aan hebt. Je oorspronkelijke vraag vermeldt niets over een externe site die iets met die regex moet doen.

Maar je gaat dit niet in 1 regex vangen. Dat wil zeggen: als je onderscheid tussen een product en subcategorie nodig hebt.
Bedankt voor je terugkoppeling Ivo. Slimmer de vraag stellen kon ik niet, dan had ik het gedaan. Elke dag leren we meer, ieder op zijn eigen manier.

Ik ga dan nadenken over drie dingen:

1. Hoe kom ik aan een regex voor de externe site die alleen alles op subcategorieniveau pakt http://www.steppinout.nl/heren/lounge-pants.html
2. Hoe kom ik aan een regex voor de externe site die alle productpagina's onder dat subcategorieniveau pakt: http://www.steppinout.nl/heren/lounge-pants/lounge-pants-00003220-20.html

Daarmee zou ik dan ook heel blij zijn.

en

3. Waarom inderdaad die Japanse vrouwen.. Denk dat ik daar wel wat van kan vinden :)
Rob heeft, denk ik, een oplossing aangedragen.
Het lastige is alleen dat je niet een eenduidige url hebt.

Maar maakt dat uit voor de site waar je die regex moet invullen?
Als een productpagina altijd barst van de nummers op het eind, dan kun je daar met een reg-ex ook nog wel weer wat mee.
Ik ga het proberen, maar aangezien dit voor mij soort hocus pocus is moet ik de tijd nemen het te begrijpen. Ik weet niet eens hoe ik de code van Rob moet lezen en wat ik zou moeten kopiëren.

Ik had verwacht/of gehoopt dat ik een simpel stukje tekst zou krijgen, copy paste klaar. Maar zo werkt het helaas niet kom ik nu achter.

Ik kan geen plaatjes bijvoegen op dit forum vandaar dat ik dat plaatje met zo'n prtscrn linkje laat zien steeds (daar staat dan inderdaad reclame bij).

Maar er staat dus "Enter page URL - URL Regular Expression" en dan 1 klein invulveld met daarin "e.g. \/pages\/[^\/]+

In ieder geval dank voor het meedenken!



[size=xsmall]Toevoeging op 15/11/2017 13:27:15:[/size]

Rob Doemaarwat op 15/11/2017 13:11:45

Als een productpagina altijd barst van de nummers op het eind, dan kun je daar met een reg-ex ook nog wel weer wat mee.


Nee, kan je niet vanuit gaan helaas.. Dit gaat om het analyseren van bezoekersgedrag op specifieke pagina's. Ik laat de tool data verzamelen van categoriepagina's en van productpagina's. Beiden hebben een andere functie en oop beiden gedragen bezoekers zich anders. Met die regex vertel ik de tool wat wat is. Het hoeft ook niet compleet te zijn, zolang ze maar niet door elkaar heen lopen.

hoeveel subcategorieën heb je?

Als dat niet de spuigaten uitloopt, kun je mogelijk die nog expliciet noemen in de regex
ik zou het om willen draaien, hoeveel kan ik er kwijt? Ik heb er +- 40, maar als ik er 10 kwijt kan is dat beter dan niets. Hoe minder ik er kwijt kan hoe langer het duurt voor ik data heb, maar het werkt wel.
Gewoon een single point of entry gebruiken en een router.

Alle requests leiden dan naar 1 pagina dankzij wat instellingen in de .htaccess. Laten we zeggen dat alle request naar index.php leiden waarin je een router zijn werk laat doen om de URL te ontleden en te beslissen welke controller/method er aangeroepen moet worden. In de controller laadt je dan uiteindelijk je data en je template.

Je zou dan ongeveer deze routes krijgen:

/{category} ==> ProductController::ShowCategory()
/{category}/{product} ==> ProductController::showProduct()
/{category}/{subcategory} ==> ProductController::ShowSubcategory()
/{category}/{subcategory}/{product} ==> ProductController::showProduct()

De volgorde waarin je de routes behandeld is heel belangrijk en zal bepalen welke route voorrang krijgt.

Stel:
ww.domein.nl/etenswaar/brood

Is brood dan een artikel of is het een subcategory ? Zou allebei kunnen toch?
Laat je nu de router de route /{category}/{product} als eerst behandelen dan zal die matchen en wordt de showProduct() method aangeroepen en dus een productpagina geladen.

Verander je de volgorde van de routes, bijvoorbeeld:

/{category}/{subcategory} ==> ProductController::ShowSubcategory()
/{category}/{product} ==> ProductController::showProduct()


dan zal hij eerst /{category}/{subcategory} pakken en wordt de ShowSubcategory() aangeroepen in plaats van showProductWithCategory()

Hoe kom je aan zo een systeem? Het handigste is om een kant en klaar framework te pakken. Bijvoorbeeld CakePHP.

Reageren