Php 帮助使用去除前导空白的正则表达式
我正在修改Kohana库的一个核心函数,函数 该函数将自己描述为“类固醇上的nl2br()。本质上,它提供了Php 帮助使用去除前导空白的正则表达式,php,html,regex,kohana,Php,Html,Regex,Kohana,我正在修改Kohana库的一个核心函数,函数 该函数将自己描述为“类固醇上的nl2br()。本质上,它提供了单行换行符,但双线换行符被标记包围 我发现它的局限性在于,它只能在 $str = preg_replace('~^[ \t]+~m', '', $str); 我不是最好的正则表达式大师,但我很确定上面说的是“在至少有一个前导空格和制表符的地方获取前导空格和制表符,并用空字符串替换它们。” 我已经尝试删除这一行,但是它会在我绝对不想要它们的地方添加——在一个例子中,我得到这样的输出 $st
单行换行符,但双线换行符被
标记包围
我发现它的局限性在于,它只能在
$str = preg_replace('~^[ \t]+~m', '', $str);
我不是最好的正则表达式大师,但我很确定上面说的是“在至少有一个前导空格和制表符的地方获取前导空格和制表符,并用空字符串替换它们。”
我已经尝试删除这一行,但是它会在我绝对不想要它们的地方添加
——在一个例子中,我得到这样的输出
$str = preg_replace(
'~^[ \t]++(?=(?:[^<]++|<(?!/?+pre\b))*+(?:\z|<pre\b))~im',
'', $str);
- 某物
如何修改此正则表达式或代码,使其不删除
元素中的前导空格
(?:[^<]++|<(?!/?+pre\b))*+
。(滚动至最下方)
我知道我会得到一些“使用HTML解析器”类型的答案——尽管你可能是对的——现有代码只是使用正则表达式,我更喜欢一个更简单的解决方案(我不需要包含库等)
谢谢您的时间。以下是我的做法:
正确平衡标签。SGML注释中的标记也会把事情搞砸——除非它们恰巧是平衡的。如果你不介意将正则表达式的长度增加两倍,丑陋程度增加三倍,你也可以处理评论 我会这样做:
正确平衡标签。SGML注释中的标记也会把事情搞砸——除非它们恰巧是平衡的。如果你不介意将正则表达式的长度增加两倍,丑陋程度增加三倍,你也可以处理评论 这是一个很好的答案(我会马上尝试)+1(包括半衰期参考):)这是一个很好的答案(我会马上尝试)+1(包括半衰期参考):)
(?:[^<]++|<(?!/?+pre\b))*+