Php preg_replace:如何去除所有空白和空白?

Php preg_replace:如何去除所有空白和空白?,php,regex,preg-replace,whitespace,Php,Regex,Preg Replace,Whitespace,如何去除所有空白和空白 我在我创建的包装中输入了这个 [b] 粗体[/b] 因此,在将文本变为粗体之前,我想去掉所有空格,并将其变为[b]粗体[/b] 但它不起作用!您能帮忙吗?不需要基于正则表达式的解决方案。您可以简单地将其用作: 不需要基于正则表达式的解决方案。您可以简单地将其用作: 您可以用空字符串替换空格,例如 preg_replace("/(?:\s| )+/", "", $this->content, -1) -1导致替换命中匹配的每个实例。您可以用空字符串

如何去除所有空白和空白

我在我创建的包装中输入了这个

[b] 粗体[/b]

因此,在将文本变为粗体之前,我想去掉所有空格,并将其变为[b]粗体[/b]


但它不起作用!您能帮忙吗?

不需要基于正则表达式的解决方案。您可以简单地将其用作:


不需要基于正则表达式的解决方案。您可以简单地将其用作:


您可以用空字符串替换空格,例如

preg_replace("/(?:\s| )+/", "", $this->content, -1)

-1导致替换命中匹配的每个实例。

您可以用空字符串替换空格,例如

preg_replace("/(?:\s| )+/", "", $this->content, -1)
$this->content = preg_replace(
    '~\[(.*?)](?:\s| )*(.*?)(?:\s| )*\[/\\1]/', 
    '[$1]$2[/$1]', 
    $this->content
);

-1使替换命中匹配的每个实例。

为您提供一个完整的正则表达式解决方案:

$this->content = preg_replace(
    '~\[(.*?)](?:\s| )*(.*?)(?:\s| )*\[/\\1]/', 
    '[$1]$2[/$1]', 
    $this->content
);
$this->content = preg_replace( '/\[([a-z]+)\](?: |\s)*(.*?)(?: |\s)*\[\/([a-z]+)\]/', '[$1]$2[/$3]', $this->content );
但是在这种情况下,您应该将空格删除和bbcode转换结合起来,以确保标记正确:

$this->content = preg_replace( '/\[b\](?:&nbsp;|\s)*(.*?)(?:&nbsp;|\s)*\[\/b]/', '<b>$2</b>', $this->content );

要同时提供正则表达式的完整解决方案,请执行以下操作:

$this->content = preg_replace( '/\[([a-z]+)\](?:&nbsp;|\s)*(.*?)(?:&nbsp;|\s)*\[\/([a-z]+)\]/', '[$1]$2[/$3]', $this->content );
但是在这种情况下,您应该将空格删除和bbcode转换结合起来,以确保标记正确:

$this->content = preg_replace( '/\[b\](?:&nbsp;|\s)*(.*?)(?:&nbsp;|\s)*\[\/b]/', '<b>$2</b>', $this->content );

另一种可行的方法是:

$this->content = trim(str_replace('&nbsp;','',$this->content));
PHP手册链接:

修剪


*注意:这是假设$This->content只包含OP发布的字符串另一个有效的方法是:

$this->content = trim(str_replace('&nbsp;','',$this->content));
PHP手册链接:

修剪


*注意:假设$This->content只包含OP发布的字符串,我找到了另一个解决方案

$this->content = preg_replace("/\[(.*?)\]\s*(.*?)\s*\[\/(.*?)\]/", "[$1]$2[/$3]", html_entity_decode($this->content));

我找到了另一个解决办法

$this->content = preg_replace("/\[(.*?)\]\s*(.*?)\s*\[\/(.*?)\]/", "[$1]$2[/$3]", html_entity_decode($this->content));

回答有点晚,但希望能帮助其他人。从html中提取内容时,最重要的事情是在php中使用。然后,所有其他字符串操作都变得轻而易举。即使是外来字符也可以通过直接将粘贴字符从浏览器复制到php代码中来替换

以下函数将替换为空字符。然后使用preg_replace将所有空格替换为空字符

[b] 粗体[/b]


回答有点晚,但希望能帮助其他人。从html中提取内容时,最重要的事情是在php中使用。然后,所有其他字符串操作都变得轻而易举。即使是外来字符也可以通过直接将粘贴字符从浏览器复制到php代码中来替换

以下函数将替换为空字符。然后使用preg_replace将所有空格替换为空字符

[b] 粗体[/b]



问题很简单,php不能识别为空白字符,因为它实际上只是一个由6个字符组成的字符串。如果您想使用regexps实现这一点,您需要告诉php也要进行明确的匹配?可能根本不需要添加它?问题很简单,php不能识别为空白字符,因为它实际上只是一个由6个字符组成的字符串。如果您想使用regexps实现这一点,您需要告诉php也要进行明确的匹配?可能根本不添加它?这也会删除[b]之外的空白。但我不知道这是否是预期的行为。查看他的示例输入/输出似乎就是他想要的。除了示例没有显示标记外的文本。如果在他正在解析的下一个字符串中再获取一个,该怎么办?这是一个非常糟糕的回答。这将删除[b]之外的空白。但我不知道这是否是预期的行为。查看他的示例输入/输出似乎就是他想要的。除了示例没有显示标记外的文本。如果在他正在解析的下一个字符串中再获取一个,该怎么办?这是一个很糟糕的回答,也不起作用。原来的问题没有显示OP想要删除的字符。另外,你的解决方案根本不起作用,因为方括号没有转义,而且你的分组也没有任何帮助。@poke:我不明白你想说什么。结束方括号]不需要转义。我所做的一切就是使用OPs正则表达式,删除不必要的部分并添加对的识别。@nikic:嗯?“你在两个答案之间改变了吗?”波克:我想你指的是另一个答案。我没有改变这个。@nikic:o.o是的,我想是的,那是我的错。。困惑-你能稍微改变一下你的答案吗?添加一个空格或什么的,这样我就可以再次删除-1了?那也不行。原来的问题没有显示OP想要删除的字符。另外,你的解决方案根本不起作用,因为方括号没有转义,而且你的分组也没有任何帮助。@poke:我不明白你想说什么。结束方括号]不需要转义。我所做的一切就是使用OPs正则表达式,删除不必要的部分并添加对的识别。@nikic:嗯?“你在两个答案之间改变了吗?”波克:我想你指的是另一个答案。我没换这个。@nikic:好的,我想是的 那么,我的错。。困惑-你能稍微改变一下你的答案吗?添加一个空格或什么,这样我就可以再次删除-1了?