2011-01-06 2 views
2

У меня есть база данных mysql, кодированная UTF8. Однако из-за некоторых предыдущих проблем преобразования, которые я унаследовал, некоторые строки были неправильно сохранены в базе данных.mysql php encoding

Например, £ следует сохранять как  £, но во многих местах его сохраняли как-то вроде Ã⠀ šÃ, £.

Я смог отслеживать все записи в таблице, которые были неправильно закодированы. Самый простой способ удалить все лишние символы из этого поля базы данных varchar?

Я пробовал preg_replace в php, но это, похоже, ничего не делает.

return preg_replace("[^A-Za-z0-9£]", "", $string); 

ответ

2

необходимо заключить регулярное выражение в разделителях:

return preg_replace("/[^A-Za-z0-9£]/", "", $string); 
+0

был в процессе этого, так что +1 за избиение меня – DTest

0

Что возвращается из этого preg_replace вызова, незатронутая строка или NULL? Если оно равно нулю, то ошибка произошла в соответствии с preg_replace manual. Помимо отсутствующих разделителей, которые @AndreKR отправил, мне все хорошо (проверено со строкой £)