Методы удаления определенных символов из строки? - PullRequest
16 голосов
/ 25 марта 2011

Мне нужно убрать скобки "[" и "]" из $widget_text в значении переменной ниже и сохранить результат в $widget_id.

$widget_text = '[widget_and-some-text]';
$widget_id = ?;

Использовать preg_replace, str_replace или что-то еще?

Ответы [ 3 ]

48 голосов
/ 25 марта 2011

Доступно несколько методов, и иногда их можно выполнить для выполнения одной и той же задачи, например preg_replace / str_replace. Но, возможно, вы хотите удалить скобки только с начала или конца строки; в этом случае preg_replace работает. Но, если может быть несколько скобок, preg_replace тоже справится с этой задачей. Но обрезка легче и имеет больше смысла.

preg_replace () - удаляет начальные и конечные скобки

$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);      

str_replace () - это убирает скобки в любом месте текста

$widget_id = str_replace(array('[',']'), '',$widget_text);

trim () - обрезает скобки от начала и до конца

$widget_id = trim($widget_text,'[]')

substr () - выполняет то же самое, что и trim () (при условии, что текст виджета не содержит закрывающих скобок внутри текста)

$widget_id = substr($widget_text,
                    $start = strspn($widget_text, '['),
                    strcspn($widget_text, ']') - $start
             );
6 голосов
/ 25 марта 2011
$widget_id = str_replace('[', '', str_replace(']', '', $widget_text));
1 голос
/ 25 марта 2011

Если скобки всегда в первой и последней позиции, используйте это:

$widget_id = substr($widget_text, 1, strlen($widget_text)-2);

Я думаю, что это более быстрый способ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...