23 lines
542 B
PHP
23 lines
542 B
PHP
<?php
|
|
|
|
namespace App\Services\Documents;
|
|
|
|
class TokenScanner
|
|
{
|
|
// Allow entity.attr with attr accepting letters, digits, underscore, dot and hyphen for flexibility (e.g., custom.order-id)
|
|
private const REGEX = '/{{\s*([a-zA-Z0-9_]+\.[a-zA-Z0-9_.-]+)\s*}}/';
|
|
|
|
/**
|
|
* @return array<int,string>
|
|
*/
|
|
public function scan(string $content): array
|
|
{
|
|
preg_match_all(self::REGEX, $content, $m);
|
|
if (empty($m[1])) {
|
|
return [];
|
|
}
|
|
|
|
return array_values(array_unique($m[1]));
|
|
}
|
|
}
|