Как заменить пробелы и тире, когда они появляются только вместе с тире в PHP?
например, ниже мой URL
http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes
В этом я хочу заменить все специальные символы тире в PHP. В URL после "балкона" уже существует один тире. Если я заменяю тире специальным символом, то это становится двумя тире, потому что уже существует один тире в URL, и я хочу только 1 тире.
Если дефис можно окружить не более чем одним пробелом, воспользуйтесь ответом Джона . Если может быть более одного пробела, вы можете попробовать использовать preg_replace :
$str = preg_replace('/\s*-\s*/','-',$str);
Это заменит даже -
, не окруженный пробелами, на -
!!
Чтобы сделать его немного более эффективным, вы можете сделать:
$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);
Теперь это обеспечит наличие хотя бы одного пространства вокруг -
во время его замены.
Я бы сказал, что вы, возможно, хотите по-другому. Не "пробелы", а все неалфавитно-цифровые символы. Потому что могут быть и другие символы, запрещенные в URl (знак +, например, который используется как замена пробела)
Итак, чтобы сделать правильный url из текста в свободной форме
$url = preg_replace("![^a-z0-9]+!i", "-", $url);