【问题标题】:Wildcard PHP text search通配符 PHP 文本搜索
【发布时间】:2010-03-21 19:53:14
【问题描述】:

我有一个文本字符串已被修改为网络安全 URL,即非字母数字转换为“_”。

我想做的是在转换之前搜索原始名称,这意味着我需要某种通配符搜索,即

我有什么

test__mytest

带通配符

test??mytest

我会通过通配符搜索找到的字符串

test: mytest

谁能告诉我如何在 PHP 中实现这一点? 谢谢

【问题讨论】:

    标签: php search text


    【解决方案1】:

    可能已经找到解决方案here 如果我让它工作,我会更新。

    编辑:这是我的解决方案

    $searchstring = "/".str_replace("_","(.?)", escape_string_for_regex($match))."/";
    

    这会将所有 _ 替换为在该位置搜索单个字符。 然后,我使用以下行针对测试字符串测试 $searchstring。

    if (preg_match($searchstring, $matchtitle))
    

    【讨论】:

    • escape_string_for_regex 应该是preg_quote($match, '/')。 (除非您在自己的函数中使用它)。
    【解决方案2】:

    另一种方法是对特殊字符进行编码,而不是将它们转换为下划线。那么你就不需要通配符了,你只需要搜索编码的值。

    例如 test%3A%20page

    这也可以防止您尝试将以下两个转换为页面时遇到的问题:

    测试:页面
    测试!页面

    它们都会变成 test_page,空间/时间连续体将处于危险之中。可能不太可能,但仍然不受欢迎。

    【讨论】:

    • 不幸的是我无法控制编码,所以我必须使用通配符。不过谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2014-05-20
    相关资源
    最近更新 更多