3

我想在 mysql 数据库的文本字段中存储一些正则表达式。目前我最好的想法是为我的分隔符使用不规则的符号模式。例子:

$delim = '!@#$%';
$regex1 = '/^(.+)$/';
$regex2 = '/.(.+)./';
$regex3 = '/(\s+):\/\//';
$string = $regex1.$delim.$regex2.$delim.$regex3;

然后将 $string 存储在数据库中。要检索我会使用类似的东西:

$array = explode($delim,$string);

我想知道的是,是否有一种更好、更准确的方法,而不仅仅是希望我的定界符不出现在其中一个正则表达式中。

4

3 回答 3

6

是的,更好的方法。将它们放入数据库和或将它们拉出时使用serialize()或。json_encode()unserialize()json_decode()

这样做的好处是不会以灾难性的方式失败,最终导致您永远进行调试。

<?php
$string = json_encode( array( $regex1, $regex2, $regex3 ) );

// Later
$array = json_decode( $string );
于 2012-07-04T02:50:54.760 回答
1

为什么不使用空字节,\0

于 2012-07-04T02:51:41.123 回答
1

我们使用数据库的原因之一是我们不必自己想出分隔符,而是可以让数据库处理数据的存储方式。

现在,您正在发明自己的数据结构,即使您的数据库可以自己完成这一切。

我想说的是:您应该将正则表达式的每个部分存储在自己的行中,让您的 DBMS 担心其余部分。

于 2012-07-04T03:06:53.527 回答