Я использую функцию preg_replace
для замены акцентов в строке, я работаю с UTF-8.
Я столкнулся с утечкой памяти, но не могу выделить основную причину, мой код довольно прост:
preg_replace(
array_keys($aToNoAccents),
array_values($aToNoAccents),
$sText
);
, где $aToNoAccents
- ассоциативный массив с записями типа '~[Ą]~u' => 'A', '~[Ć]~u' => 'C',
.
Мой скрипт печатает эту ошибку для приведенной выше строки:
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 3039 bytes)
Очевидно, что дело не в увеличении разрешенной памяти для PHP (1 ГБ занимает место за пределами моего приложения). Кроме того, эта строка выполняется тысячи раз без проблем, но только в некоторых случаях, которые трудно воспроизвести, она выдает ошибку.
Кто-нибудь знает о проблемах памяти со строками preg_replace и UTF-8?
Должен ли я проявлять особую осторожность при передаче фактических параметров такой функции?
Я использую PHP 5.2.6-3 с Suhosin-Patch