检测文本区域中复制的选项卡以进行数据库输入


Detect copied tabs in textarea for database input

我有一个文本区域,允许用户编写自己的输入,并将其保存到数据库中。

大多数用户从word或类似程序中复制他们的文本,该程序也将他们的选项卡复制到文本区域。

当选项卡保存到数据库中时,它会自动将它们转换为一个空间。

我想将选项卡作为适当的选项卡保存到数据库中,或者保存一定数量的空白,但我一开始就抓不到选项卡。

这是我迄今为止所尝试的(在从用户那里获得输入之后,在保存到数据库之前)

str_replace("'t", "    ", $string);
str_replace(chr(9), "     ", $string);

然而,我可以看出标签甚至没有被捕获,因为我尝试了这个:

if (strpos($string, "'t") !== false)
{
    exit("The tab was found");
}  

"出口"永远不会被调用。

我已经广泛搜索了这个问题的答案,但我还没有找到任何修复方法。

我真的很感谢在这方面的帮助。

Nathan Bell的评论"在看到值之前,是否对表单值进行了任何预处理?"。这让我思考。

我正在使用codeigniter作为我的php框架。在做了一些研究并查看了源代码后,我发现内置的安全类将我所有的选项卡格式化为一个空间,就像这样…

if (strpos($str, "'t") !== FALSE)
{
    $str = str_replace("'t", ' ', $str);
}

所以我所做的只是将源代码更改为:

if (strpos($str, "'t") !== FALSE)
{
    $str = str_replace("'t", '      ', $str);
}

现在它正在发挥作用。所以,感谢Nathan和其他所有提供帮助的人!