【问题标题】:PHP string "contains" [duplicate]PHP字符串“包含” [重复]
【发布时间】:2012-11-14 15:35:17
【问题描述】:

检查字符串是否包含“.”的最有效方法是什么?还是不行?

我知道您可以通过许多不同的方式执行此操作,例如使用 regular expressions 或遍历字符串以查看它是否包含点 (".")。

【问题讨论】:

标签: php regex string


【解决方案1】:

PHP 8 或更新版本:

使用str_contains 函数。

if (str_contains($str, "."))
{
    echo 'Found it';
}

else
{
    echo 'Not found.';
}

PHP 7 或更早版本:

if (strpos($str, '.') !== FALSE)
{
    echo 'Found it';
}

else
{
    echo 'Not found.';
}

请注意,您需要使用!== 运算符。如果您使用!=<> 并且'.' 位于0 位置,则比较将评估为真,因为0 大致等于false

【讨论】:

  • +1 表示“这将导致您在周末将生产网站指向开发数据库,​​当您周一返回时会带来无限欢乐。”
  • 用 stripos 替换 strpos 以进行不区分大小写的搜索。
  • @JordanArseno 是什么让你这么说?嵌套代码?你建议他把它封装成一个函数?
  • if (count(explode('.', $string)) != 2) { //string don't have dot }
  • @TahirYasin 这是不正确的 - 如果有多个点怎么办...这将导致您将 development 网站指向 production 数据库, 抹去它,当你星期一回来时,带来无穷无尽的欢乐
【解决方案2】:

您可以使用stristr()strpos()。如果没有找到,两者都返回 false

【讨论】:

  • 请务必注意,您不能检查“falsy”,它必须是 false。使用相同的运算符(=== 或 !==),因为 strpos 和 stristr 返回 0 作为第 0 位,但如果您使用“等于”(== 或 !=)它认为它是错误的。跨度>
  • @Mattisdada 很好,感谢您指出这一点。
【解决方案3】:

你可以使用这些字符串函数,

strstr — 查找第一次出现的字符串

stristr — 不区分大小写的 strstr()

strrchr — 查找字符串中最后一次出现的字符

strpos — 查找字符串中子字符串第一次出现的位置

strpbrk — 在字符串中搜索任何一组字符

如果这没有帮助,那么您应该使用preg 正则表达式

preg_match — 执行正则表达式匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多