0

クイック質問、

タグのコンマ区切りリストである次の文字列があります。

$tagcap = "tag1, tag2, tag3";

次のような単一の文字列を取得するにはどうすればよいですか。

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

つまり、各単語の前に # を追加するだけですか?

ありがとう!

編集:

どうもありがとう。ハイフン付きの単語の前に # を追加することを除いて、完璧に思えます。たとえば、self-shot は #self-#shot になります。これを修正するにはどうすればよいですか?

編集 2: 迅速なヘルプに感謝します。問題は修正されました!

4

5 に答える 5

3

正規表現を使用:

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

アップデート:

-charを含めるには、次を使用します。

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

where([a-z0-9]+)は、任意の文字、数字、および文字と一致します-。このiフラグにより​​、大文字と小文字が区別されなくなります。

于 2012-06-07T07:21:44.930 に答える
1
$tagcap = "tag1, tag2, self-shot";
echo preg_replace( "/([a-z0-9-_]+)/i", "#$1", $tagcap );

どの出力:

#tag1, #tag2, #self-shot

これにより、一連の文字、数字、ダッシュ (-)、またはアンダースコアの前にハッシュ (#) が付けられます。

デモ: http://codepad.org/0WgaZg2L

于 2012-06-07T07:26:45.463 に答える
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;
}
?>
于 2012-06-07T07:31:01.093 に答える
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"
于 2012-06-07T07:41:09.823 に答える
0

これを試してください:

$tagcap = "tag1, tag2, tag3";

$tagcap = str_replace("t","#t",$tagcap );
echo $tagcap;
于 2012-06-07T07:25:26.257 に答える