<?php
$regex = '/(?:\A|\n)\s*(@[\pL-_]+)\ *(?s:(.*?))(?=\n\s*@)/ux';
$comment = <<<COMMENT
@see MyTag this is a @description
that spans multiple lines
@internal
@author Mike van Riel <me@mikevanriel.com>
COMMENT;
var_dump(preg_match_all($regex, $comment, $matches, PREG_SET_ORDER));
var_dump($matches);
int(2)
array(2) {
[0]=>
array(3) {
[0]=>
string(61) "
@see MyTag this is a @description
that spans multiple lines"
[1]=>
string(4) "@see"
[2]=>
string(54) "MyTag this is a @description
that spans multiple lines"
}
[1]=>
array(3) {
[0]=>
string(11) "
@internal"
[1]=>
string(9) "@internal"
[2]=>
string(0) ""
}
}
Output for 4.3.11, 5.0.0 - 5.0.4
Warning: preg_match_all(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 16 in /in/a1arP on line 12
bool(false)
array(0) {
}
Output for 4.3.0 - 4.3.10
Warning: Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 16 in /in/a1arP on line 12
bool(false)
array(0) {
}