我在cms上有一个开源编辑器,它自动插入
<br />
标记在它提交到数据库的帖子的开头。这使得验证变得很麻烦,因为即使没有提交真实文本,表单仍然接受break标记作为输入,并防止显示“请输入一些文本”错误。
所以我尝试通过过滤我的输入来删除开始中断标记:
substr($_POST['content'], 6);
只要用户没有按下退格键几次就会删除break标记,这样就可以了。在这种情况下,即使帖子的前8个字符不是中断标记,它也会被删除。
那么,如果前6个字符由break标记组成,那么如何才能删除输入的前6个字符。另外,我不想删除所有中断标记,只删除帖子开头的那个。
答案 0 :(得分:4)
表现和冗长:
if (substr($_POST['content'], 0, 6) == '<br />') {
$_POST['content'] = substr($_POST['content'], 6);
}
不是那么冗长,但有点慢:
$_POST['content'] = preg_replace('#^<br />#', '', $_POST['content']);
答案 1 :(得分:3)
$content = $_POST['content'];
if ( substr($content, 0, 6) == '<br />' )
$content = substr($content, 6);
答案 2 :(得分:3)
为您的开源编辑器创建解决方法并不是您应该寻求的解决方案。修改编辑器是不是更明智,所以它不会在那里插入<br />
,所以你根本不必担心它?
答案 3 :(得分:2)
你可以使用例如。 preg_replace函数:
$text = preg_replace('#^<br />#', '', $text);
如果您不想使用regexp,可以在删除之前检查substr:
if (substr($text, 0, 6) == '<br />')
$text = substr($text, 6);
答案 4 :(得分:1)
我认为这是一个更好的解决方案,用于测试用户是否确实输入了某些内容:
if (!strlen(trim(strip_tags($_POST['content'])))) {
// no content
}
else {
// some content
}
这基本上测试输入中是否还有HTML标签。
答案 5 :(得分:0)
首先用ltrim
删除开头的空格,然后测试是否有br。如果有br删除它并执行另一个ltrim
以删除br之后的空白。
$str = ltrim($_POST['content']);
if (substr($str, 0, 6) == '<br />'){
$str = ltrim(substr($str, 6));
}
if ($str){
//some content
} else {
//no content
}
通过这种方式,您可以忽略br。之前和之后的空格和新行。