4

如何比较这个字符串:

commodity/search/oil/branch/index

有了这个 :

commodity/search/*/branch/index

尽管“油”被替换为其他词,但它应该返回 true。

4

2 回答 2

7
$match = preg_match("/commodity\/search\/(.*)\/branch\/index/", "commodity/search/someotherword/branch/index");

$match如果找到匹配项,将为真(或某个值评估为真,如 1)。

注意:以上将匹配任何额外的路径,例如commodity/search/some/other/word/branch/index

如果你只想匹配一个单词,而不是类似于路径结构的东西,那么你可以尝试这样的事情:

$match = preg_match("/commodity\/search\/[A-Za-z0-9_-]+\/branch\/index/", "commodity/search/some-OTHER_word/branch/index");

这只会匹配大小写的 az 字符、数字、连字符和下划线。根据需要进行调整。

于 2012-07-21T16:00:16.473 回答
1

PHP 有一个内置函数,称为fnmatch()

它提供了基本通配符的用法。

<?php

if (fnmatch('commodity/search/*/branch/index', 'commodity/search/oil/branch/index')) {
    echo "It matches!";
}

但是,非 POSIX 兼容系统不支持它(请参阅 PHP 手册)。

于 2018-05-27T09:20:25.327 回答