Я использую 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;
это выше дает следующее ("__" представляет два пробела)
__Это было бы довольным, что я хочу левого!
результат должен быть...
это было бы довольным, что я хочу остаться!
без предыдущих двух пространств, может кто-то сказать мне, где я ошибаюсь. Благодарю.
не уверен в вашем коде, но я тестировал это и хорошо работал
$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/)
Просто добавьте дополнительные пробелы в конец регулярного выражения:
$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!
без пробелов в начале.
\s
. Можно также просто использоватьtrim()
. И почему последний обратный удар избежал?trim()
и сделано. Не бойтесь использовать более одной функции для выполнения задачи