Замените все пробелы и специальные символы с тире в URL с помощью языка PHP

Как заменить пробелы и тире, когда они появляются только вместе с тире в PHP?

например, ниже мой URL

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes

В этом я хочу заменить все специальные символы тире в PHP. В URL после "балкона" уже существует один тире. Если я заменяю тире специальным символом, то это становится двумя тире, потому что уже существует один тире в URL, и я хочу только 1 тире.

21
задан Anax 23 July 2010 в 13:35
поделиться

2 ответа

Если дефис можно окружить не более чем одним пробелом, воспользуйтесь ответом Джона . Если может быть более одного пробела, вы можете попробовать использовать preg_replace :

$str = preg_replace('/\s*-\s*/','-',$str);

Это заменит даже ​​- , не окруженный пробелами, на - !!

Чтобы сделать его немного более эффективным, вы можете сделать:

$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);

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

2
ответ дан 29 November 2019 в 20:09
поделиться

Я бы сказал, что вы, возможно, хотите по-другому. Не "пробелы", а все неалфавитно-цифровые символы. Потому что могут быть и другие символы, запрещенные в URl (знак +, например, который используется как замена пробела)

Итак, чтобы сделать правильный url из текста в свободной форме

$url = preg_replace("![^a-z0-9]+!i", "-", $url);
43
ответ дан 29 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: