Убрать пунктуацию в поле адреса в PHP

Всем привет. У меня возникли проблемы с удалением знаков препинания из поля адреса...

В основном я хочу взять такие вещи, как:

1234 Apple St. N.

И превратить его в:

1234 Apple St N

Точка — единственный знак препинания, который я могу себе представить… но я полагаю, что действительно хочу убрать ВСЕ. Может ли кто-нибудь помочь мне здесь? Ничего из того, что я делаю, не работает... ааа!


person Shackrock    schedule 05.05.2011    source источник
comment
Все? Вы имеете в виду $address = '';? Извините за глупый вопрос, но вы должны четко указать, что должно быть полосатым, а что должно остаться.   -  person KingCrunch    schedule 05.05.2011


Ответы (2)


Вы можете использовать preg_replace для получения желаемого результата. а \w — это сокращение от [a-zA-Z0-9_], к вашему сведению.

$newAddress = preg_replace('/[^\w\s]/','',$oldAddress);

EDIT Теперь, когда я думаю об этом, вы, вероятно, хотите [^\w\s], чтобы вы также не удаляли пробелы.

ДЕМО

person Brad Christie    schedule 05.05.2011
comment
@Shackrock: больше нет, пожалуйста, посмотрите мой РЕДАКТИРОВАТЬ и демоверсию. - person Brad Christie; 05.05.2011
comment
Вопрос в том, должно ли King's Road стать Kings Road. - person kapa; 05.05.2011
comment
@bazmegakapa: Правда, хотя я никогда не видел апострофов на дорожных знаках. (Хотя я уверен, что всегда есть исключения). - person Brad Christie; 05.05.2011

Что не так с str_replace в php? Это заменит все вхождения указанной строки строкой замены (включая строку нулевой длины "").

person Richard H    schedule 05.05.2011
comment
Работает и с массивами (для одновременной замены нескольких) :) - person KingCrunch; 05.05.2011