首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Tagify从输入中获取PHP值

如何使用Tagify从输入中获取PHP值
EN

Stack Overflow用户
提问于 2019-02-25 02:06:14
回答 2查看 1.9K关注 0票数 1

我在使用jQuery Tagify提交PHP表单时遇到了一个问题。

如果我添加像JohnThomas这样的两个标签,那么我得到的$_POST['tag']是:

代码语言:javascript
复制
'[{"value":"John"}, {"value":"Thomas"}]'

如何更改我的$_POST['tag']以获取此帖子:John,Thomas

EN

回答 2

Stack Overflow用户

发布于 2019-02-25 02:14:13

代码语言:javascript
复制
var_dump(implode(', ', array_column(json_decode($_POST['tag']), 'value')));

首先,将$_POST['tag']中的JSON解码为数组/对象结构。array_column为您提供了带有值的平面数组。然后用逗号(implode)将其连接起来。

票数 4
EN

Stack Overflow用户

发布于 2022-02-22 14:42:16

是的,方括号挡道了。实际上,tagify-js输出一个json对象数组。所以json_decode函数也不起作用。有必要准备输出。

下面是我实现的保存输入值的函数。它将它们转换为值的数组。

代码语言:javascript
复制
function br_bookmarks_tagify_json_to_array( $value ) {

    // Because the $value is an array of json objects
    // we need this helper function.

    // First check if is not empty
    if( empty( $value ) ) {
        
        return $output = array();

    } else {

        // Remove squarebrackets
        $value = str_replace( array('[',']') , '' , $value );

        // Fix escaped double quotes
        $value = str_replace( '\"', "\"" , $value );

        // Create an array of json objects
        $value = explode(',', $value);

        // Let's transform into an array of inputed values
        // Create an array
        $value_array = array();

        // Check if is array and not empty
        if ( is_array($value) && 0 !== count($value) ) {

            foreach ($value as $value_inner) {
                $value_array[] = json_decode( $value_inner );
            }

            // Convert object to array
            // Note: function (array) not working.
            // This is the trick: create a json of the values
            // and then transform back to an array
            $value_array = json_decode(json_encode($value_array), true);

            // Create an array only with the values of the child array
            $output = array();

            foreach($value_array as $value_array_inner) {
                foreach ($value_array_inner as $key=>$val) {
                    $output[] = $val;
                }
            }

        }

        return $output;

    }

}

用法:br_bookmarks_tagify_json_to_array( $_POST['tag'] );

希望它能帮助其他人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54854892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档