preg_match возвращает символы, отличные от входной строки

[Решено] Добавление модификатора /u к регулярному выражению устраняет эту проблему, если кто-то борется с ней. Кредит М.И. в комментариях :)

Рассмотрим следующий код:

var_dump('Trimiteţi');
preg_match('/^([\p{L}]+)/', 'Trimiteţi', $matches);
print_r($matches);

Я использую его для фильтрации слова, которое может иметь нелатинские символы, используя \p{L}, также обратите внимание, что я не использую символ регулярного выражения $ в конце строки в preg_match

Теперь к проблеме, при локальном выполнении кода я получаю этот вывод:

string 'Trimiteţi' (length=10)
Array ( [0] => TrimiteÅ [1] => TrimiteÅ )

Я попытался выполнить код в песочнице PHP и выдал что-то похожее:

string(10) "Trimiteţi"
Array
(
    [0] => Trimite�
    [1] => Trimite�
)

Обратите внимание, что по крайней мере на этот раз исходное слово var_dump не испортилось.

Что здесь происходит? Почему использование preg_match меняет слово? Хуже всего то, что если я добавлю $ в конец регулярного выражения, оно будет НЕ СОВПАДИТЬ, так как я предполагаю, что эти преобразованные символы не могут быть интерпретированы как конец строки или что-то в этом роде. Пожалуйста помогите

Изменить: кодировка файла, которую я запускаю, установлена ​​​​на "text/x-php; charset=utf-8"
Edit2: Кроме того, я использовал regex101.com, и при использовании РЕГУЛЯРНОГО ВЫРАЖЕНИЯ "^[\p{L}]+$" и слова "Trimiteţi" оно кажется совпадающим. Вы даже можете переключить РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ НА "^([\p{L}]+)$", добавив группу захвата, и сайт выведет:

MATCH 1
1.  [0-9]   `Trimiteţi`

person Arno    schedule 08.09.2016    source источник
comment
интересно, должно работать, может проблема в кодировке при отображении в консоли. попробуйте сохранить в файл и открыть текстовым редактором.   -  person M. I.    schedule 08.09.2016
comment
preg_mach немного отличается от простого шаблона регулярного выражения, проверьте свои шаблоны здесь functions-online.com/preg_match. html   -  person M. I.    schedule 08.09.2016
comment
@М.И. Благодарю за ваш ответ. Я смотрю на это через браузер, но вывод консоли ведет себя так же. Сохранение $matches в файл тоже не помогло, выводит те же, измененные буквы. Предоставленный вами сайт ведет себя точно так же, как моя локальная копия, нет совпадений при использовании $ и изменен текст при использовании без   -  person Arno    schedule 08.09.2016
comment
Нашел ответ на вашу проблему здесь, на SO. Попробуйте это preg_match('/^([\p{L}]+)/u', 'Trimiteţi', $matches);   -  person M. I.    schedule 08.09.2016
comment
Здесь вы найдете дополнительную информацию: stackoverflow .com/questions/5424494/   -  person M. I.    schedule 08.09.2016
comment
Да, модификатор /u помог, большое спасибо. Сделайте это как ответ, чтобы я мог отметить как правильный   -  person Arno    schedule 08.09.2016
comment
уже ответили, поставь плюс постеру :)   -  person M. I.    schedule 08.09.2016