【问题标题】:php wildcard search for mixed string with a file path and detailsphp通配符搜索带有文件路径和详细信息的混合字符串
【发布时间】:2012-07-18 17:45:35
【问题描述】:

在我的 php 程序中,我需要使用带或不带通配符的模式搜索具有文件路径和有关它的一些详细信息的混合字符串,如果此模式与字符串匹配,则它应该返回 true,否则返回 false。

示例:

$string="us01     /remote/ecishome/gussman/Sol_10         TEST    WILLIAMS   us01-000018     us01-000019     04/19/2012      04/19/2012      05/20/2012      Expired"

如果 $pattern= "/remote/*/guss*" 它应该匹配 true 或者如果 $pattern=will* 它应该返回 true 或者如果 $pattern="/remote/ecishome/gussman/Sol_10" 那么它也应该返回 true。

谁能建议我如何做到这一点。在这方面的任何帮助都是非常可观的。

现在我为此使用fnmatch(),但无法满足要求。

【问题讨论】:

  • 这听起来像是 fnmatch() 的合理工作。当您尝试使用它时出了什么问题?
  • 感谢您的回复,我正在使用下面的代码,但它不起作用,if(fnmatch($pattern,$string,FNM_NOESCAPE|FNM_PATHNAME|FNM_CASEFOLD)) { $match++; }
  • 并且我的输入模式没有在通配符之前使用“\”进行转义,因为它是最终用户输入数据。
  • 使用时会发生什么?你有错误吗?没有比赛?错误的比赛?它是否匹配某些模式但不匹配其他模式?

标签: php string search pattern-matching wildcard


【解决方案1】:

你检查过preg_match()吗?

好的正则表达式信息网站:www.regular-expressions.info

【讨论】:

    【解决方案2】:

    要匹配/remote/*/guss* 模式,您可以使用以下正则表达式:

    /\/remote\/[\w]*\/guss[\S]*/
    

    要匹配will*,您可以使用以下正则表达式:

    /will[\S]*/i
    

    要匹配/remote/ecishome/gussman/Sol_10,您可以使用以下正则表达式:

    /\/remote\/ecishome\/gussman\/Sol_10/
    

    您可以使用preg_match 使用这些正则表达式模式

    【讨论】:

    • 嗨,感谢您的回复,但无论模式如何,我都需要一个单一的解决方案。
    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多