2017-09-15 90 views
1

我幾次使用名爲$ contact_location的變量。在字符串中的字符後格式化一個變量

它工作正常,直到我需要使用它的URL。

例字符串:

"Hello, from $contact_location, please visit www.ourwebsite.com/$contact_location" 

output: Hello, from New Mexico, please visit www.ourwebsite.com/New Mexico. 

Needed Output: Hello, from New Mexico, please visit www.ourwebsite.com/new-mexico 

有沒有辦法只格式化如果它像經過變量「的.com /」

的網址應爲www.ourwebsite.com/new-墨西哥

我知道如何str_replace函數

str_replace(" ","-",$contact_location); 
+0

請澄清你的問題。你想要* .com *後的變量還是應該替換* .com *? – Script47

+0

.com後的變量,所以URL是正確的。例如:ourwebsite.com/new-mexico – corporalpoon

+0

利用正則表達式來做到這一點。 – Script47

回答

1

試試這個:

<?php 
function formatUrl($msg) 
{  
    $pattern = '/www\..*/'; 
    preg_match($pattern, $msg, $matches); 
    return preg_replace($pattern, strtolower(str_replace(' ','-',$matches[0])),$msg); 
} 

$contact_location = 'New Mexico'; 
$msg = formatUrl("Hello, from $contact_location, please visit www.ourwebsite/$contact_location"); 
var_dump($msg); 

通過使用preg_matchpreg_replace,你可以easilly執行基於模式的字符串替換。

我假設你正在尋找一個網站內容改變,所以,我的模式是'/www\..*/'。但是,如果您想要更改它,請參閱您的問題中提到的.com,只需將$pattern值替換爲您希望的匹配。

Here, a simple regex trainning

+0

謝謝!那很完美!! – corporalpoon

+0

不客氣。 – Abe

0
$text = "Your text will be here www.yourdomain.com"; 
$contact_location = "new-maxico"; 
if (stripos($text, ".com") !== false) { 
    $text = $text . "/" . $contact_location; 
} 

這將幫助你肯定

+0

謝謝,但我需要在url之前使用$ contact_location並保持不變。 – corporalpoon

+0

我想你已經提到你需要它在上面的評論隊友中的URL。 那麼,你可以分享我你想怎麼樣,我可以幫你嗎? –

+0

見上文。我說我需要$ contact_location才能保持不變,如果它不在URL中的話。你的改變無處不在 – corporalpoon