我应该如何划分一串正则表达式?

时间:2012-07-04 02:49:23

标签: php regex delimiter

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

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

$ string存储在数据库中。要检索我,请使用以下内容:

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

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

3 个答案:

答案 0 :(得分:6)

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

这样做的好处是不会以灾难性的方式失败,最终会让你永远地调试。

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

// Later
$array = json_decode( $string );

答案 1 :(得分:1)

为什么不使用空字节\0

答案 2 :(得分:1)

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

现在,您正在发明自己的数据结构,即使您的数据库可以单独完成所有这些。

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