[英]How to Replace Custom Strings to Regex Area
我正在我的應用程序中構建“獲取所有站點鏈接”類庫。 函數參數是段,並作為網站url返回。
我存儲在數據庫中的正則表達式,例如blog/([az]+)(/[a-z0-9.-]+)?
我想用我的“匹配”數據(段)替換正則表達式。
段是字符串或數組,可以是兩者。 但更喜歡用作數組
范例1:
正則表達式: blog/([az]+)(/[a-z0-9.-]+)?
細分: news
, new-software-released
結果: blog/news/new-software-released
范例2:
正則表達式: blog/([az]+)(/[a-z0-9.-]+)?
細分: news
結果: blog/news
范例3:
正則表達式: user(/[a-z0-9.-]+)?
細分: johndoe
結果: user/johndoe
嘗試過preg_replace數組,但我無法弄清楚:
function get_url($segments){
$regex = "blog/([a-z]+)(/[a-z0-9.-]+)?"
$replacements = explode('|', trim($segments));
$count = 0;
return preg_replace('/'.$regex.'/', '$replacements[$count++]', $regex);
}
echo get_url('news|new-software-released');
我仍然不太了解您在做什么,但是看來這可以滿足您的要求:
function get_url($prefix, $segments) {
return $prefix . '/' . implode('/', explode('|', $segments));
}
echo get_url('blog', 'news|new-software-released');
echo get_url('blog', 'news');
echo get_url('user', 'johndoe');
它運作良好:
<?PHP
function get_url($segments){
$regex = "blog/([a-z]+)(/[a-z0-9.-]+)?";
$url = "blog/test";
$replacements = explode('|', trim($segments));
if(count($replacements) > 1) $replacements = 'blog/' . $replacements[0] . '/' . $replacements[1];
else $replacements = 'blog/' . $replacements[0];
$count = 0;
return preg_replace('#'.$regex.'#', $replacements, $url);
}
echo get_url('news|new-software-released');
多數民眾贊成在返回值是blog/news/new-software-released
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.