Когда я вставлю это в:
echo preg_match("#€[0-9]{1,}#", "€1" )?1:0;
Я получаю 1
, поэтому вам может не понадобиться Unicode. Но если вы все же хотите использовать UTF-8, я нашел это как комментарий в документации PHP.
function unichr($u) {
return mb_convert_encoding('&#' . intval($u) . ';', 'UTF-8', 'HTML-ENTITIES');
}
Чтобы получить €, звоните unichr(8364)
. Используйте это вместо знака евро выше, и вы будете в порядке. (Я чувствую, что должен отметить: что я тестировал обе версии как Unicode:
preg_match("#".unichr(8364)."\s*([0-9]{1,})#u", unichr(8364). "1" )?1:0;
Возможно, вы захотите сначала сделать str_replace('€', unichr(8364), $str);
...
PS. Вы, вероятно, также хотите учесть пробелы и десятичные дроби: #€\s*([0-9]{1,}(\.?[0-9]{2}))#