2017-09-15 92 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