【问题标题】:Select from comma separated list从逗号分隔列表中选择
【发布时间】:2011-07-11 00:28:16
【问题描述】:

所以我正在开发一个标签系统,我有一个看起来像这样的字段:

<input name="tags" type="text" />

并且我希望用户能够输入诸如(逗号分隔)之类的标签:“标签一、标签二、标签三”等等,然后在后端 PHP 中,单独拉出每个标签并将它们全部放入放入一个数组中,如:

$tags = array("Tag one", "Tag two", "Tag three");

然后我正在考虑使用foreach 将它们插入到数据库中自己的行中,我知道该怎么做;但我离题了。但是如何将字符串中的标签与用户的表单输入分开呢?

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用explode function

    $tags = explode(',',$_POST['tags']);

    【讨论】:

      【解决方案2】:
      $tags= explode(",", $input_from_tag_form);
      

      查看更多信息here

      【讨论】:

        【解决方案3】:

        这实际上很简单,您只需使用explode 函数,因为这里有很多人在PHP Offical Documentation 上指出,您可以找到有关如何使用此函数的很好的示例

        一般而言,您可以使用任何表达式(逗号、冒号、破折号或任何您能想到的)进行拆分

        <?php
        $datas = '1213456|Joe|Fake st 405|50678983942|joe@fake.com';
        
        $data_array = explode('|', $datas);
        
        echo "$data_array[0], $data_array[1], $data_array[2], $data_array[3], $data_array[4]";
        
        ?>
        

        【讨论】:

          【解决方案4】:

          如果提交的 url(我假设 GET 为此目的)看起来像:
          yoursite.com?save_tags=abba,music,1970

          代码看起来像(注意,这不是完整的逻辑):

          $tags_sql="('" . explode('),(',$_GET['save_tags']) . "')";//this happens after you sanitize input, or just use PDO/MySQLi params to insert the data...google it
          $sql = "INSERT INTO tags_table VALUEs {$tags_sql} ON UPDATE SET usage=usage+1";
          

          这假设一个标签表有 3 个字段,id (pk) |tag_name (unique) |usage(默认为 1)

          【讨论】:

            【解决方案5】:

            您可以使用explode()。它接受分离的键,并返回一个数组。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-31
              • 2016-12-28
              • 1970-01-01
              • 2012-11-03
              • 2013-03-06
              • 1970-01-01
              • 2021-02-18
              相关资源
              最近更新 更多