preg_replace met haakjes
Ik heb de volgende output uit een database:
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.
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 moet " (nog iets)" dan perse tussen een ander setje haakjes staan (zoals in het voorbeeld "naam (iets (nog iets))", of mag het ook gewoon "los" staan (bijvoorbeeld "naam (nog iets)"?
En ik neem aan dat " (nog iets)" dus een variabele waarde heeft - gewoon een setje karakters?
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.
En wil je dat die 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.
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.
In MySQL kan je 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.
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.
eens kijken:
testset
regex:
Dat zou in PHP zijn
Verbeterpunt: Er blijven mogelijk nog wat spaties staan
Toevoeging op 31/05/2024 09:40:50:
output:
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:




