如何剥离所有空格和
?
我把它作为我创建的包装器的输入,
[b] bold [/b]
所以在将文字转换为粗体之前,我想剥去所有空格和& nbsp,并将其转换为[b]bold[/b]
,
$this->content = preg_replace("/\[(.*?)\]\s\s+(.*?)\s\s+\[\/(.*?)\]/",
"[$1]$2[/$3]",
$this->content);
但它不起作用!你能帮忙吗?
答案 0 :(得分:6)
不需要基于正则表达式的解决方案。您只需使用str_replace
作为:
$input = "[b] bold [/b]";
$input = str_replace(array(' ',' '),'',$input);
echo trim($input); // prints [b]bold[/b]
答案 1 :(得分:3)
我找到了另一个解决方案
$this->content = preg_replace("/\[(.*?)\]\s*(.*?)\s*\[\/(.*?)\]/", "[$1]$2[/$3]", html_entity_decode($this->content));
答案 2 :(得分:2)
$this->content = preg_replace(
'~\[(.*?)](?:\s| )*(.*?)(?:\s| )*\[/\\1]/',
'[$1]$2[/$1]',
$this->content
);
答案 3 :(得分:1)
你可以用空字符串替换空格,例如
preg_replace("/(?:\s| )+/", "", $this->content, -1)
-1会导致替换命中匹配的每个实例。
答案 4 :(得分:1)
回答有点迟,但希望可以帮助其他人。从html中提取内容时最重要的是在php中使用utf8_decode()。然后所有其他字符串操作变得轻而易举。甚至可以通过将浏览器中的粘贴字符直接复制到php代码来替换外来字符。
以下函数将
替换为空字符。然后使用preg_replace()
将所有空格替换为空字符。
function clean($str)
{
$str = utf8_decode($str);
$str = str_replace(" ", "", $str);
$str = preg_replace("/\s+/", "", $str);
return $str;
}
$html = "[b] bold [/b]";
$output = clean($html);
echo $output;
并[b]粗体[/ B]
答案 5 :(得分:0)
为您提供正则表达式的完整解决方案:
$this->content = preg_replace( '/\[([a-z]+)\](?: |\s)*(.*?)(?: |\s)*\[\/([a-z]+)\]/', '[$1]$2[/$3]', $this->content );
但在这种情况下,你应该结合空白删除和bbcode转换来确保标记是正确的:
$this->content = preg_replace( '/\[b\](?: |\s)*(.*?)(?: |\s)*\[\/b]/', '<b>$2</b>', $this->content );
答案 6 :(得分:0)
另一种可行的方法是:
$this->content = trim(str_replace(' ','',$this->content));
PHP手册链接:
trim()http://us.php.net/trim
*注意:这是假设$ this-&gt;内容仅包含OP发布的字符串