Замените все пробелы и специальные символы тире в URL, используя язык PHP
Как заменить пробелы и тире, когда они появляются вместе только с тире в PHP?
Например, ниже мой URL
http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes
В этом я хочу заменить все специальные символы тире в PHP. В URL-адресе уже есть один тире после "балкона". Если я заменю тире специальным символом, тогда он станет двумя чертами, потому что в URL-адресе уже есть одна тире, и я хочу только 1 тире.
Ответы
Ответ 1
Я бы сказал, что вы, возможно, захотите этого по-другому. Не "пробелы", но каждый не-буквенно-цифровой символ.
Потому что могут быть другие символы, которые запрещены в значке URl (+, например, который используется в качестве замены пространства)
Итак, чтобы сделать правильный URL из текста свободной формы
$url = preg_replace("![^a-z0-9]+!i", "-", $url);
Ответ 2
Если может быть максимум одно пространство, окружающее дефис, вы можете использовать ответ John. Если может быть более одного места, вы можете попробовать использовать preg_replace:
$str = preg_replace('/\s*-\s*/','-',$str);
Это заменит даже -
, не окруженный пробелами с -
!!
Чтобы сделать его более эффективным, вы можете сделать:
$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);
Теперь это обеспечит, чтобы -
имел по крайней мере одно пространство, окружающее его, когда оно было заменено.
Ответ 3
Это должно сделать это для вас
strtolower(str_replace(array(' ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));
Ответ 4
Примените это регулярное выражение /[^a-zA-Z0-9]/, '-'
, которое заменит все не буквенно-цифровые символы на -
. Сохраните его в переменной и снова примените это регулярное выражение /\-$/, ''
, которое выйдет за последний символ.
Ответ 5
Его старый протектор, но чтобы помочь кому-то, используйте эту функцию:
function urlSafeString($str)
{
$str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str));
$str = eregi_replace("[\040]+","-",trim($str));
return $str;
}
он вернет вам безопасную строку URL