2012-06-07 286 views
0

快速的問題,修改變量字符串

我有以下的字符串,它是標籤昏迷分隔列表:

$tagcap = "tag1, tag2, tag3"; 

我如何去獲得一個字符串,看起來像這樣:

$string = "#tag1, #tag2, #tag3; 

換句話說,只需在每個單詞的前面添加#

謝謝!

編輯:

非常感謝,這似乎是完美的,除了它也增加了詞與連字符#盈,例如:自拍變得#自#出手,我怎麼能解決這個問題?

編輯2:感謝您的快速幫助球員,問題修復!

+0

,如果這是真的你的字符串,str_replace()函數,但我敢打賭,它不是。你需要幫助嗎? – 2012-06-07 07:24:01

回答

1
$tagcap = "tag1, tag2, self-shot"; 
echo preg_replace("/([a-z0-9-_]+)/i", "#$1", $tagcap); 

,輸出:

#tag1, #tag2, #self-shot 

這個前綴任何系列的字母,數字,破折號( - ),或強調用哈希(#) 。

演示:http://codepad.org/0WgaZg2L

+0

工作,非常感謝! – Sherif

+0

我今天保持這個標籤可以接受,昨天晚上還不夠長,我不得不上牀睡覺;)再次感謝您的幫助! – Sherif

3

使用正則表達式:

$str = preg_replace('/(\w+)/', '#$1', $str); 

更新:

要包括-字符,使用

$str = preg_replace('/([a-z0-9-]+)/i', '#$1', $str); 

([a-z0-9]+)將任何字母,數字,和-字符相匹配。 i標誌將使其不區分大小寫。

+0

非常感謝,這似乎是完美的,除了它也增加了#連字符的單詞前面,例如:自拍變成#自拍鏡頭,我該如何解決這個問題? – Sherif

+0

@Sherif請更新您的問題,以列出您可以容納的各種格式。 – Sampson

+0

這就是當你使用「示例」使用實際值或不打擾問題時會發生什麼 – 2012-06-07 07:24:45

0

試試這個:

$tagcap = "tag1, tag2, tag3"; 

$tagcap = str_replace("t","#t",$tagcap); 
echo $tagcap; 
0

你也可以用這個,但是這是用PHP函數其他替代。

<?php 
$tagcap = "tag1, tag2, tag3"; 
$res = explode(',',$tagcap); 
$values = array(); 
foreach($res as $key=>$value){ 
    if(isset($value)){ 
    $values[] = '#'.$value; 
} 

$finalResult = implode('',$values); 
echo $finalResult; 
} 
?> 
0

這裏的另一種解決方案,而正則表達式:

$string = "tag1,tag2,tag3"; 
function addPrefix(&$item,$key,$prefix) 
{ 
    $item = $prefix.$item; 
} 

$arr = explode(",",$string); 
array_walk($arr,"addPrefix","#"); 
echo implode($arr,","); //output "#tag1,#tag2,#tag3"