$key="`client` asc";
preg_match('
~(?J)
\s*
(?:`(?P<col>(?:[^`\\\\]|\\\\.|``)*)`|(?P<col>\S+))
(?:\s+(?P<dir>asc|desc))?
\s*
\z~Axi', $key, $m);
print_r($m);
Это регулярное выражение заполняет клавишу col
при проверке здесь
https://regex101.com/r/i00sEn/1
Он не работает корректно на моей локальной PHP 5.6
машине или на этом 7.3
интерпретаторе.
http://sandbox.onlinephpfunctions.com/code/915a26b741c6d086f21129f60af2420c74cf9f89
Это работает везде, если я убираю обратные пометки, но поскольку целью этого кода является анализ предложений SQL ORDER BY, мне нужны обратные пометки.
Почему это работает? Как я могу сделать так, чтобы он соответствовал обратным меткам?