2

我想接受 PHP 的 preg_match 和 MySQL 的 LIKE 运算符都可以使用的格式的条件。

这样做的原因是在代码的两个不同部分中使用了条件,一个将条件与数据匹配起来要快得多,而另一个将数据与条件匹配起来要快得多。

我想为用户提供如下能力:

'hostname' 'match' '*.core-*-??.foo.com'

对于 MySQL,它将使用:

'%.core-%-__.foo.com'

对于 preg_match 它会使用类似的东西:

'/.*\.core-.*-..\.foo\.com$/'

我确信有人已经想出了一些方法来允许这两个系统之间的便携式匹配。

另一种方法是在 MySQL 中使用正则表达式,但我不确定从可伸缩性的角度来看这个想法有多好。

4

1 回答 1

2

尝试使用preg_escape

$str_php_input = str_replace("\\*", ".*", preg_escape($str_input));

$str_mysql_input = str_replace("*", "%", $str_input);

很好地掌握应该逃避\什么和不应该逃避什么,你就会让它很好地工作。

于 2013-07-12T12:54:49.433 回答