簡體   English   中英

如何將自定義字符串替換為正則表達式區域

[英]How to Replace Custom Strings to Regex Area

我正在我的應用程序中構建“獲取所有站點鏈接”類庫。 函數參數是段,並作為網站url返回。

我存儲在數據庫中的正則表達式,例如blog/([az]+)(/[a-z0-9.-]+)?

我想用我的“匹配”數據(段)替換正則表達式。

段是字符串或數組,可以是兩者。 但更喜歡用作數組

范例1:

正則表達式: blog/([az]+)(/[a-z0-9.-]+)?

細分: newsnew-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM