2011-06-09 15 views
1

私はしばらく検索してきましたが、私はまだ答えを見つけていません。私は自分のタグを書式設定しようとしているので、ユーザーがどのように入力したかに応じて、1つの単語または複数の単語として出てきます。私はそれのように示す必要があり、社会、ブックマークを、ソーシャルメディアPHPでユーザが入力したタグをフォーマットするには?

私はこれら三つの別々のタグを取得する...「社会」「ブックマーク」「メディア」

たとえば、ユーザーが入力これらの3つのタグ.... "ソーシャル" "ブックマーク" "ソーシャルメディア"

通知ソーシャルメディアは1つの単語です。引用符は説明するのに役立つだけで、実際には表示されません。また、私の指示にもかかわらずタグを区切るためにコンマの代わりにスペースを使用しているユーザーもいれば、長いタグを1つ作成しているユーザーもいます。ここで

は、私が今使っているコード全体は、あなたが配列にコンマ区切りのリストを変換するために爆発使用することができます...

 $query="SELECT gtags FROM posts WHERE category='".mysql_real_escape_string($CATID)."' order by rand() limit 20"; 
    $results=$conn->execute($query); 
    $gtags = $results->getrows(); 
    for($i=0; $i<count($gtags);$i++) 
    { 
     $tags .= $gtags[$i][0].","; 
    } 
    $tags = str_replace(" ", ",", $tags); 
    $tags = str_replace(".", ",", $tags); 
    $tags = str_replace("/", ",", $tags); 
    $tags = str_replace("+", ",", $tags); 
    $tags = str_replace("", " ", $tags); 
    $tags = str_replace(" ", ",", $tags); 
    $tags = explode(",", implode(",", array_unique(explode(",", $tags)))); 
    STemplate::assign('tags',$tags); 
    $templateselect = "tags.tpl"; 
+0

を追加したいを選択したり、チェックボックス

ような、よりシンプルなもの –

+0

あなたの質問は何ですか? –

+0

ユーザはリストからタグを選択する必要があります。そうしないと、類似したタグが読み込まれてしまいます。新しいタグを追加できるようにします。一度に1つのタグだけを追加します。 Ajaxを使用して、私はいくつかの滑らかな実装を見てきました。 – Cups

答えて

0

です。あなたはスペースでも爆発することができますが、爆発は、social mediaのスペースがセパレータではないことを知るのに十分ではなく、ソーシャルブックマークのスペースは分かりません。

私はあなたのユーザーがカンマを使用するように訓練するのがよいと思います。また、複数行の編集(テキストエリア)を提供して、キーワードを入力し、各行に1つずつ入力することもできます。オプションでカンマも使用できます。しかし、スペースを区切り文字として使用している場合は、すべてのタグを最初に照会してそのリストをチェックしない限り、タグ内にスペースを入れることはできません。しかし、あなたのユーザーが実際にキーワード「社会」と「メディア」を入力することを実際に意図していた場合、どうでしょうか? ...

0

ユーザーはカンマで区切っそのタグを入力した場合、あなたは文字列を爆発によってタグの配列を作成することができます。$all_tags = explode(',', $tag_string);

ユーザーはカンマを入力しない場合、あなたがしているので、あなたは、立ち往生していますユーザーが1単語以上のタグを意図しているかどうかは分かりません(換言すれば、スペース文字を区切り文字として使用することはできません)。

タグをユーザのタイプとして返​​すタグテーブルへのAJAX呼び出しを設定することができます。リスト内の正しいタグをクリックすると、そのタグのリストに追加されます。これにより問題は解消されますが、ユーザーがタグを追加したいときや、すでにテーブルにない複数のタグを追加するときには、何をすべきかを検討する必要があります。

+0

基本的にユーザーがそれを正しくしない限り、それはうまくいきません。私はPHPが心を読むことができないと思う...まだ。今、私は各タグを別々にするように強制していますが($ tags = str_replace( ""、 "、" $ tags);)、そうでなければスペースで区切られたタグは1つの巨大なタグになります。何とかこれを修正することは可能ですか? – viacin

+0

申し訳ありませんが、私はあなたが何を求めているのか分かりません...少なくとも何を修正することは可能ですか? –

0

より良いアプローチ:

$search = array(
    "a", 
    "b", 
    "c" 
); 
$replace = array(
    "1", 
    "2", 
    "3" 
); 
$str = str_replace($search, $replace, $str); 

私は、ユーザーがいくつかの理由で、リストからタグを選択することができるようになる:

  • ほとんどのユーザーは、彼らも作成することがあり、適切にタグ付けする方法を知りませんタグは(帽子を含む) "ベストソーシャルメディアサイト2011"
  • あなたは文法ミスをたくさんすることができます
  • 実際の "パターン"
  • あなたが考えることができることを
  • 、より; P

は芋これを行うには良い方法は、独自のタグデータベースを作成し、ユーザーが入力から複数のタグを選択できるようにすることである:テキスト+オートコンプリート(jqueryの)、またはちょうど彼らが(少なくともあまりない)関連していないので、あなたはあなたの2つの質問を分割する必要があります私の意見