2016-05-17 3 views
0

Я ищу для изменения строки PHP, поэтому я могу использовать ее в качестве якоря.PHP - снятие скобок и специальных символов

я использовал метод нашел здесь: Remove all special characters from a string

Он работал хорошо, чтобы удалить амперсанды из моих строк, но это не кажется, удаление или влияющим на кронштейны или знаки препинания.

Вот что я в настоящее время с помощью:

$name_clean = preg_replace('/ [^A-Za-z0-9\-]/', '', $name); // REMOVES SPECIAL CHARACTERS 
$name_slug = str_replace(' ', '-', $name_clean); // REPLACES SPACES WITH DASHES IN TITLE 
$link = strtolower($name_slug); // CREATES LOWERCASE SLUG VERSION OF TITLE_SLUG 

Моей строки (в данном случае $ имени) = Сент-Джонсе (Ньюфаундленд).

Выход я = # С.-john'snewfoundland)

Я хотел бы, чтобы удалить периоды, апострофы и скобки в целом.

Любая помощь была бы принята с благодарностью!

+0

Является ли ведущее пространство в регулярном выражении преднамеренным? – apokryfos

+0

Это было, потому что изначально единственным персонажем, с которым я пытался повлиять, был амперсанд, который всегда следовал пробелу. С некоторыми настройками я смог заставить его работать. Благодаря! –

ответ

2

Ваш шаблон регулярного выражения / [^A-Za-z0-9\-]/, как представляется, содержит пробел после открытия /. Этот шаблон будет соответствовать только специальному символу, который появляется после пробела. Удаление этого пространства должно получить результат, который вы хотите.

+0

Aha! Спасибо вам за это. –