preg_replace met haakjes
naam
naam (iets)
naam (iets (nog iets))
Ik zou graag " (nog iets)" vervangen zien middels preg_replace er rekening mee houdend dat het ook niet kan voorkomen. "naam" en "iets" kan alles karakters bevatten.
En ik neem aan dat " (nog iets)" dus een variabele waarde heeft - gewoon een setje karakters?
Gewijzigd op 30/05/2024 19:02:31 door Rob Doemaarwat
De output moet zijn: “naam” of “naam (iets)”… maw (nog iets) moet helemaal komen vervallen.
regexp in de database plaatsvindt voordat de query de uitvoer naar PHP stuurt?
Of wil je eerst extra I/O naar PHP (met minder CPU op de database) zodat je de regex in PHP kunt laten uitvoeren?
Aan de titel te zien zoek je het in PHP, maar het kan evt. ook in de database.
En wil je dat die Of wil je eerst extra I/O naar PHP (met minder CPU op de database) zodat je de regex in PHP kunt laten uitvoeren?
Aan de titel te zien zoek je het in PHP, maar het kan evt. ook in de database.
Dat is mij om het even. Let wel, ik gebruik MySQL dus misschien zit dat net wat anders in elkaar? Uit nieuwsgierigheid mogen beide opties worden gepost, is alleen maar leerzaam natuurlijk.
REGEXP_REPLACE() gebruiken.
Ik heb me nooit heel erg in reguliere expressies verdiept, omdat het doet wat je net zo goed in beter leesbare (PHP-)code kunt doen zoals het parsen van geneste haakjes. En omdat er verschillende varianten van zijn en verschillende implementaties.
Wat mij betreft kan je wat je wilt veel eenvoudiger en leesbaarder oplossen zonder reguliere expressies.
Een simpele for-lus die het aantal haakjes telt en een nieuwe string maakt, met alleen de tekens die je wilt.
Omdat je vraag gaat over reguliere expressies (misschien als onderdeel van nog meer expressies), op SO wordt jouw vraag ook gesteld. Het antwoord daar is dat onder meer PHP recursieve expressies ondersteunt.
Ik doe alle linkjes er bij, want ik heb op dit moment niet genoeg tijd en kennis om het uit te zoeken, maar misschien helpt dit je dichterbij een oplossing.
In MySQL kan je Ik heb me nooit heel erg in reguliere expressies verdiept, omdat het doet wat je net zo goed in beter leesbare (PHP-)code kunt doen zoals het parsen van geneste haakjes. En omdat er verschillende varianten van zijn en verschillende implementaties.
Wat mij betreft kan je wat je wilt veel eenvoudiger en leesbaarder oplossen zonder reguliere expressies.
Een simpele for-lus die het aantal haakjes telt en een nieuwe string maakt, met alleen de tekens die je wilt.
Omdat je vraag gaat over reguliere expressies (misschien als onderdeel van nog meer expressies), op SO wordt jouw vraag ook gesteld. Het antwoord daar is dat onder meer PHP recursieve expressies ondersteunt.
Ik doe alle linkjes er bij, want ik heb op dit moment niet genoeg tijd en kennis om het uit te zoeken, maar misschien helpt dit je dichterbij een oplossing.
testset
Code (php)
1
2
3
4
5
6
2
3
4
5
6
dit is een tekst
dit is een tekst (met haakjes)
dit is een tekst met (2 levels (van haakjes) en zo)
dit is een tekst met (2 keer) een (set haakjes) en niet genest
dit is een tekst met (2 keer) een (set haakjes (2e wel genest))
dit is een tekst (met haakjes)
dit is een tekst met (2 levels (van haakjes) en zo)
dit is een tekst met (2 keer) een (set haakjes) en niet genest
dit is een tekst met (2 keer) een (set haakjes (2e wel genest))
regex:
Dat zou in PHP zijn
Verbeterpunt: Er blijven mogelijk nog wat spaties staan
Toevoeging op 31/05/2024 09:40:50:
output: