Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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