Регулярное выражение, замените несколько наклонных черт только одним

На легкую проблему походит решать, но Это не столь легко, как это кажется. У меня есть эта строка в PHP:

////%postname%/

Это - URL, и я никогда не хочу больше чем одну наклонную черту подряд. Я никогда не хочу удалить наклонные черты полностью.

Это - то, как это должно быть похожим:

/%postname%/

Поскольку структура могла выглядеть по-другому, мне нужна умная замена preg regexp, я думаю. Это должно работать с URL как это:

////%postname%//mytest/test///testing

который должен быть преобразован в это:

/%postname%/mytest/test/testing
6
задан Jens Törnell 7 February 2010 в 18:28
поделиться

4 ответа

Вот, пожалуйста:

$str = preg_replace('~/+~', '/', $str);

Или:

$str = preg_replace('~//+~', '/', $str);

Или даже:

$str = preg_replace('~/{2,}~', '/', $str);

Простая str_replace () также подойдет трюк (если имеется не более двух последовательных косых черт):

$str = str_replace('//', '/', $str);
18
ответ дан 8 December 2019 в 03:39
поделиться

Попробуйте:

echo preg_replace('#/{2,}#', '/', '////%postname%//mytest/test///testing');
4
ответ дан 8 December 2019 в 03:39
поделиться
echo str_replace('//', '/', $str);
-1
ответ дан 8 December 2019 в 03:39
поделиться
function drop_multiple_slashes($str)
{
  if(strpos($str,'//')!==false)
  {
     return drop_multiple_slashes(str_replace('//','/',$str));
  }
  return $str;
}

использует str_replace

.
4
ответ дан 8 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

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