Php 从字符串中删除标记并将结果分配给变量的字符串操作?
给定$widget_text中的字符串变量Php 从字符串中删除标记并将结果分配给变量的字符串操作?,php,string,Php,String,给定$widget_text中的字符串变量 $widget_text = '[widget_and-some-text]'; 我需要做一个字符串操作来结束 $widget_text_sanitized = 'and-some-text'; 怎么做 也就是说,我认为这应该行得通: $widget_text = trim($widget_text,'[]'); $widget_text_sanitized = str_replace('widget_','',$widget_text); 使用
$widget_text = '[widget_and-some-text]';
我需要做一个字符串操作来结束
$widget_text_sanitized = 'and-some-text';
怎么做
也就是说,我认为这应该行得通:
$widget_text = trim($widget_text,'[]');
$widget_text_sanitized = str_replace('widget_','',$widget_text);
使用正则表达式,可以得到如下内容:
$widget_text = '[widget_and-some-text]';
if (preg_match('/\[widget_([^\]]+)\]/', $widget_text, $matches)) {
var_dump($matches[1]);
}
这会让你:
string 'and-some-text' (length=13)
这将从字符串中删除前8个字符和最后一个字符(无论它们是什么字符)。因此,必须删除的总是
widget\uu
?是的。我使用“widget”作为标记戳,然后“and some text”成为用于将widget分配给侧边栏的id。这是方法+1。没有笨重的strpos+substr魔法,而是一个一致的正则表达式。请不要忘记,使用正则表达式不是最快的解决方案。在这种情况下使用它可能有些过分,因为必须删除的文本总是相同的。
$widget_text_sanitised = substr($widget_text, 8, -1);