I need to find all occurrences of a Tag for a WP-Plugin.
<wpg3>10|300|defaultTemplate|eyJhbGlnbiI6ImFsaWdubGVmdCJ9</wpg3>
There are serval possible Versions of the tag (,,, ...) but start and end do match. The Groups are optional: Should mean, that there could be none or one, or two or three "|", which separate the Options.
My problem: if there is only one Tag in my search-string everything will work as expected. But if I add a second tag to my string , the callback is only called once, instead of once per Tag. There must be something missing at the Beginning or in the end. The Regexp just fails using multiple tags if the last Argument (features) is missing.
$return = preg_replace_callback('/<wpg[23](?P<unused>id)?>(?P<uri_or_id>[^\|]*)[\|]?(?P<width>[^\|]*)[\|]?(?P<template>[^\|]*)[\|]?(?P<features>[^\|]*)<\/wpg[23](?P<unused2>id)?>/i', array( $this, 'wpg3_content' ), $content );
I taking the example above I wanna get:
Array
(
[0] => 10|300|defaultTemplate|eyJhbGlnbiI6ImFsaWdubGVmdCJ9
[unused] =>
[1] =>
[uri_or_id] => 10
[2] => 10
[width] => 300
[3] => 300
[template] => defaultTemplate
[4] => defaultTemplate
[features] => eyJhbGlnbiI6ImFsaWdubGVmdCJ9
[5] => eyJhbGlnbiI6ImFsaWdubGVmdCJ9
)