首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用strpos在字符串中查找带有转义撇号的单词

使用strpos在字符串中查找带有转义撇号的单词
EN

Stack Overflow用户
提问于 2015-08-27 18:04:10
回答 1查看 641关注 0票数 1

我有一个字串中的转义撇号。我试图使用strpos来确定带转义撇号的单词是否在字符串中。不幸的是,它每次都会重复错误。我做错了什么?我试过了,在strpos中,有一个逃逸的斜杠,两个逃逸的斜杠,一直到5,但是每次都是假的。

代码语言:javascript
复制
$text = "example\'s";
$text = " ".$text." ";

if (strpos($text, " example\\\\\'s ")) {
echo "true.";
}

else {
echo "false.";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 18:13:39

这里有两个问题--第一个是字符串的转义,第二个是基于strpos函数返回的逻辑。

第一个问题是,您不需要将搜索输入转义到strpos --它不是正则表达式!

第二个问题是,您的(未转义的)搜索字符串将匹配在零位置,PHP也将其解释为虚值。

PHP状态:

警告此函数可能返回布尔值FALSE,但也可能返回计算为FALSE的非布尔值。有关更多信息,请阅读有关布尔人的部分。使用===操作符测试此函数的返回值。

请使用以下代码,这些代码应该工作得很好:

代码语言:javascript
复制
$text = "example\'s";
$text = " ".$text." ";

if (strpos($text, " example\'s ") === false) {
    echo "false.";
} else {
    echo "true.";
}

===操作符是这里的关键--它意味着相同的值和类型,因此它阻止PHP解释器将零返回视为等于false,否则它就会这样做。

参见PHP的比较操作符参考:http://php.net/manual/en/language.operators.comparison.php

编辑:关于PHP认为是假的值的进一步信息:-

当转换为布尔值时,以下值被视为FALSE: 布尔假本身 整数0(零) 浮点数0.0 (零) 空字符串和字符串"0“。 零元素数组 一个成员变量为零的对象(仅限于PHP 4) 特殊类型NULL (包括未设置变量) 由空标记创建的SimpleXML对象 所有其他值都被认为是真(包括任何资源)。 警告:-1被认为是正确的,就像任何其他非零(无论是负数还是正数)!

来自:http://php.net/manual/en/language.types.boolean.php

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32256497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档