Archief - Regex optimalisatie

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cyberkef

Legacy Member
Voor het Quote Notification systeem op dit forum werk ik adhv een regex om te zien of een quote gemaakt werd van een post, en om de nickname en de quote eruit te halen.

PHP:
if ( preg_match_all("/\[quote=(.*?)\](.*?)\[\/quote\]/is", $post['message'], $matches) > 0 )

Omdat nicknames met het symbool "]" in zorgen voor problemen, heeft vBulletin daar zelf een oplossing voor gevonden, nl door er enkele quotes rond te zetten, en dan heb ik hiervoor een tweede regex gemaakt:

PHP:
if ( preg_match_all("/\[quote='([^']*?)'\](.*?)\[\/quote\]/is", $post['message'], $matches) > 0 )

Dit werkt nu, maar ik zou toch liever met één regex werken die de twee zaken in één keer kan catchen. De basic van regex heb ik wel, maar na verschillende hopeloze pogingen ga ik het toch over een andere boeg gooien en hier es vragen of iemand een mogelijke oplossing weet :p

Ik vermoed dat het zal moeten werken adhv [highlight]Alternation[/highlight] (met |) maar als ik dat probeer met haakjes rond, dan is mijn matching array helemaal om zeep.

Dus hetgeen ik zoek is één regex waarmee volgende twee zaken kunnen gevonden worden:

[noparse]
Nickname zei:

Nick[name] zei:
[/noparse]

Cycloon

Legacy Member
PHP:
if ( preg_match_all("/\[quote=('[^']*?'|.*?)\](.*?)\[\/quote\]/is", $post['message'], $matches) > 0 )

Daarna wel nog

PHP:
$name = rtrim(ltrim($name,"'"),"'")

Mss wel niet zo'n ideale oplossing, maar op een andere manier zal het niet lukken volgens mij zonder uw matching array deels op te schuiven.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan