Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从字符串中删除标记并将结果分配给变量的字符串操作?_Php_String - Fatal编程技术网

Php 从字符串中删除标记并将结果分配给变量的字符串操作?

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_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);