![](/img/trans.png)
[英]How can I call a function using regular expressions for string replacement?
[英]How should I delimit a string of regular expressions?
我想在mysql數據庫的文本字段中存儲一些正則表達式。 目前我最好的想法是為我的分隔符使用不規則的符號模式。 例:
$delim = '!@#$%';
$regex1 = '/^(.+)$/';
$regex2 = '/.(.+)./';
$regex3 = '/(\s+):\/\//';
$string = $regex1.$delim.$regex2.$delim.$regex3;
然后$ string將存儲在數據庫中。 要檢索我會使用類似的東西:
$array = explode($delim,$string);
我想知道的是,如果有一種更好,更准確的方法,而不僅僅是希望我的分隔符不出現在其中一個正則表達式中。
是的,更好的方式。 將它們放入數據庫時使用serialize()
或json_encode()
,並在將它們拉出時使用unserialize()
或json_decode()
。
這樣做的好處是不會以災難性的方式失敗,最終會讓你永遠地進行調試。
<?php
$string = json_encode( array( $regex1, $regex2, $regex3 ) );
// Later
$array = json_decode( $string );
為什么不使用空字節, \\0
?
我們使用數據庫的原因之一是,我們不必自己提出分隔符,而是讓數據庫處理數據的存儲方式。
現在,您正在創建自己的數據結構,即使您的數據庫可以單獨完成所有操作。
我想說的是:你應該將正則表達式的每個部分存儲在自己的行中,讓你的DBMS擔心其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.