2012-07-04 22 views
3

我想在mysql數據庫的文本字段中存儲一些正則表達式。目前我最好的想法是爲我的分隔符使用不規則的符號模式。例如:我應該如何分隔一串正則表達式?

$delim = '[email protected]#$%'; 
$regex1 = '/^(.+)$/'; 
$regex2 = '/.(.+)./'; 
$regex3 = '/(\s+):\/\//'; 
$string = $regex1.$delim.$regex2.$delim.$regex3; 

$ string將被存儲在數據庫中。要檢索我會使用類似:

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

我想知道的是,如果有比只是希望我的分隔符不會出現在regexs的一個更好的,更準確的方法。

回答

6

是的,更好的方法。將它們放入數據庫時​​使用serialize()json_encode(),將它們拉出時使用unserialize()json_decode()

這樣做的好處是不會以災難性的方式失敗,最終導致您永遠無法調試。

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

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

+1使用編碼/解碼(然後選擇使用分隔符)始終使用任意分隔符跳動並希望獲得最佳效果。 –

+1

謝謝,這應該很好。很高興知道。 – brack

1

爲什麼不使用空字節,\0

+1

根據數據的來源和使用它的方法,空字節肯定是基於分隔符的方法的最佳選擇。如果對象具有私有或受保護的變量,那麼這就是PHP將對象類型化爲數組時所使用的內容 –

1

我們使用數據庫的原因之一是,我們不必自己拿出分隔符,而是讓數據庫處理數據的存儲方式。

現在,您正在創建自己的數據結構,即使您的數據庫可以自己完成這一切。

我想說的是:您應該將正則表達式的每個部分存儲在自己的行中,讓您的DBMS擔心其餘部分。