我想在mysql数据库的文本字段中存储一些正则表达式。目前我最好的想法是为我的分隔符使用不规则的符号模式。例如:
$delim = '!@#$%';
$regex1 = '/^(.+)$/';
$regex2 = '/.(.+)./';
$regex3 = '/(\s+):\/\//';
$string = $regex1.$delim.$regex2.$delim.$regex3;
然后将$ string存储在数据库中。要检索我,请使用以下内容:
$array = explode($delim,$string);
我想知道的是,是否有更好,更准确的方法,而不仅仅是希望我的分隔符不会出现在其中一个正则表达式中。
答案 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担心其余部分。