我处于需要分解包含用户输入但自定义分隔符的字符串的情况。我想确保用户不能在他们的输入中输入该分隔符,以免在错误的位置爆炸字符串。
做这个的最好方式是什么?是否有某种类型的过滤器我应该在用户数据上运行以删除分隔符的出现?我认为会有比仅仅创建一个独特的分隔符更好的答案。
谢谢。
这是一个古老的问题,所以用已经解决的方法来解决它。
在 CSV 文件中,逗号是分隔符,但条目可以包含逗号。如何?用引号将条目括起来。如果条目包含引号怎么办?将用户输入上的引号加倍,这样您就知道它们是数据而不是分隔符。
Field One,Field Two,"Field, Three","Field ""Four"""
PHP 具有创建和读取带有自定义分隔符的 CSV 格式的功能,因此您甚至不必编写代码。
如果您的环境中没有 str-getcsv,那么根据您原始问题中的评论。
假设您的分隔符是管道符号
$clientString = 'somestring|fobar';
$clientString = str_replace('|', '{{{somecrazydelimiter}}}', $clientString);
您可以稍后在爆炸后扭转这种情况,并将您的临时分隔符替换为原始分隔符:
$clientString = str_replace('{{{somecrazydelimiter}}}', '|', $clientString);