如何在使用PHP的字符串中查找撇号?
我无法检测字符串中的撇号(')。我试过如何在使用PHP的字符串中查找撇号?
if (strpos($username, chr(39)) > 0)
if (strpos($username, '\') > 0)
if (strpos($username, "'") !== FALSE))
没有运气。什么是正确的做法?
单引号是一个特殊字符。因此,如果您想在single quoted string内使用单引号,则必须使用反斜杠\
符号来避免单引号。
int singleQuotePosition = strpos($username, '\'');
OR
int singleQuotePosition = strpos($username, "'");
bahh .. nope的文件名或目录时不好。单引号字符串表示该字符串在单引号内。 *叹*。 –
@yi_H:是的,它是目前的问题范围混乱,我会编辑链接标题我已经提供基本上引用单引号和双引号字符串 – sll
但这是答案是死**错**,OP发布了一个工作方案。 –
你上市这一块,它应该工作:
if (strpos($username, "'") !== FALSE)
又一个随机猜测:也许你的单引号是不是真的单引号。
如果是这样,你可能想尝试mb_strpos
或preg_match
找到该字符的UTF-8的变化:
preg_match("/'/u", $string);
甚至与/\p{Pi}/u
测试,看看它是另一种类型的单引号分身的。
另一个秘诀:不是strpos
和布尔结果摆弄,尝试strstr
如果你只是想测试一个字符存在。
请提供一个简单的测试案例。你的一个解决方案应该已经可以工作你确定它是一个撇号吗?还有其他字符看起来像撇号。 –
我可以问你为什么要在用户名中搜索'''? –
我不想允许用户名 - 默认情况下,Drupal允许。当您想要在URL中传递用户名或创建使用用户名 – MotoTribe