preg_replace оставляет два пробела

0

Я использую preg_replace для удаления нежелательного контента из строки, он работает, но он оставляет 2 пробела, поэтому...

 $content = '[content I want deleted including square brackets] this would be content that I want left!';

 $result = preg_replace(''\[[^\]]*\]\'','',$content);

  echo $result;

это выше дает следующее ("__" представляет два пробела)

__Это было бы довольным, что я хочу левого!

результат должен быть...

это было бы довольным, что я хочу остаться!

без предыдущих двух пространств, может кто-то сказать мне, где я ошибаюсь. Благодарю.

  • 2
    Ваше регулярное выражение не ищет пробелы \s . Можно также просто использовать trim() . И почему последний обратный удар избежал?
  • 0
    trim() и сделано. Не бойтесь использовать более одной функции для выполнения задачи
Показать ещё 1 комментарий
Теги:
preg-replace

2 ответа

0
Лучший ответ

не уверен в вашем коде, но я тестировал это и хорошо работал

$content = '[content __I want deleted including square brackets] this would be content that I want left!';

 $result = preg_replace('#\[([^\]]*)\]#is','',$content);

  echo $result;

(Я использую "есть", потому что я всегда забываю о значении модификаторов шаблонов, и они всегда хорошо работают, если вы не знаете, что проверить http://php-regex.blogspot.it/)

  • 0
    Это круто, спасибо, действительно ценю это.
0

Просто добавьте дополнительные пробелы в конец регулярного выражения:

$content = '[content I want deleted including square brackets] this would be content that I want left!';
$result = preg_replace(''\[[^\]]*\]\s*'', '', $content);
echo $result;

Это дает:

this would be content that I want left!

без пробелов в начале.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню