2012-06-07 294 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"