php+mysql数据库里面一个字段值的调用和显示问题,在线等!

表名timu,字段名xuanxiang,字段的值是:a:4:{i:1;a:2:{s:1:"k";i:1;s:2:"xx";s:1:"你";}i:2;a:2:{s:1:"k... 表名timu,字段名xuanxiang,字段的值是:
a:4:{i:1;a:2:{s:1:"k";i:1;s:2:"xx";s:1:"你";}i:2;a:2:{s:1:"k";i:2;s:2:"xx";s:1:"我";}i:3;a:2:{s:1:"k";i:3;s:2:"xx";s:2:"你们";}i:4;a:2:{s:1:"k";i:4;s:2:"xx";s:2:"我们";}}
这个调用出来以后怎么显示成下面的格式:
A、你
B、我
C、你们
D、我们
php的代码,麻烦高手指教,非常非常感谢!
展开
 我来答
滨海渔村之梦
推荐于2016-08-13 · TA获得超过409个赞
知道小有建树答主
回答量:182
采纳率:50%
帮助的人:117万
展开全部

【思路】

取值,解析成数组,循环输出


【效果】


【PHP】

<?php
    header('Content-type:text/html; charset=utf-8');
    
    
    /**
     * special_str_to_arr 转为数组
     * 2014-12-03
     * 
     * @author Rudon <285744011@qq.com>
     * @param string $str
     * @return array $return
     */
    function special_str_to_arr ($str) {
        $return = array();
        if (!is_string($str) || trim($str) == '') {
            return $return;
        }
    
        /* 格式化 */
        $human_preg = '/([a-zA-Z\d]+):/i';
        $human_str = preg_replace($human_preg, '', $str); // DEMO1
        $human_str = str_replace(';{', ':{', $human_str); // DEMO2
        $human_str = str_replace(';}', '}', $human_str); // DEMO3
        $human_str = preg_replace('/";(["\d]+)/i', '":$1', $human_str); // DEMO4
        $human_str = preg_replace('/\}(\d+)/i', '},$1', $human_str); // DEMO5
        $human_str = str_replace(';"', ',"', $human_str); // DEMO6
        $human_str = preg_replace('/([^\d])(\d+):/i', '$1"$2":', $human_str); // DEMO7
        
        /* 字符串转数组 */
        $arr = json_decode($human_str, true);
        if (is_array($arr) && count($arr)) {
            $return = $arr; // DEMO8
        }
        return $return;
    }
    
    
    
    
    /**
     * get_upper_abc_by_i 通过数字取大写字母 4=>D 1=>A
     * 2014-12-03
     * 
     * @author Rudon <285744011@qq.com>
     * @param int $n
     * @return string $return
     */
    function get_upper_abc_by_i ($n = 1) {
        $return = '';
        if(is_int($n) && $n > 0 && $n <= 26) {
            $return = chr(ord('A') + $n - 1);
        }
        return $return;
    }
    
    
    
    
    /* 从字段取出字符串 */
    $xuanxiang_str = 'a:4:{i:1;a:2:{s:1:"k";i:1;s:2:"xx";s:1:"你";}i:2;a:2:{s:1:"k";i:2;s:2:"xx";s:1:"我";}i:3;a:2:{s:1:"k";i:3;s:2:"xx";s:2:"你们";}i:4;a:2:{s:1:"k";i:4;s:2:"xx";s:2:"我们";}}';
    $options = special_str_to_arr($xuanxiang_str); // DEMO8 数组
    // print_r($arr);die;
    
    /* 增加选项对应的字母 */
    if (count($options)) {
        foreach ($options as $k => $v) {
            $n = intval($v['k']); // 第几个选项
            $letter = get_upper_abc_by_i($n); // 对应字母
            $options[$k]['letter'] = $letter; // 每个选项都有字母可显示
        }
    }
    // print_r($options);die;
    
    
    
    /* HTML代码 */
    echo '<form action="" method="post">';
    echo '<h3>请选择We的意思:</h3>';
    foreach ($options as $k => $v) {
        echo "<div><input type='radio' name='timu1' value='{$v['k']}'/> <b>{$v['letter']}</b>、{$v['xx']}</div>";
    }
    echo '</form>';
    die();
    
    
/************** 示例 **************
// 目标格式:{"1":{"k":1,"xx":"You"},"2":{"k":2,"xx":"Me"} ... }
// DEMO1 => {1;{"k";1;"xx";"你";}2;{"k";2;"xx";"我";}3;{"k";3;"xx";"你们";}4;{"k";4;"xx";"我们";}}
// DEMO2 => {1:{"k";1;"xx";"你";}2:{"k";2;"xx";"我";}3:{"k";3;"xx";"你们";}4:{"k";4;"xx";"我们";}}
// DEMO3 => {1:{"k";1;"xx";"你"}2:{"k";2;"xx";"我"}3:{"k";3;"xx";"你们"}4:{"k";4;"xx";"我们"}}
// DEMO4 => {1:{"k":1;"xx":"你"}2:{"k":2;"xx":"我"}3:{"k":3;"xx":"你们"}4:{"k":4;"xx":"我们"}}
// DEMO5 => {1:{"k":1;"xx":"你"},2:{"k":2;"xx":"我"},3:{"k":3;"xx":"你们"},4:{"k":4;"xx":"我们"}}
// DEMO6 => {1:{"k":1,"xx":"你"},2:{"k":2,"xx":"我"},3:{"k":3,"xx":"你们"},4:{"k":4,"xx":"我们"}}
// DEMO7 => {"1":{"k":1,"xx":"你"},"2":{"k":2,"xx":"我"},"3":{"k":3,"xx":"你们"},"4":{"k":4,"xx":"我们"}}
// DEMO8 => 在最下面
*****************************/


/*****解析出来的数组DEMO8****
Array
(
    [1] => Array
    (
        [k] => 1
        [xx] => 你
    )
    
    [2] => Array
    (
        [k] => 2
        [xx] => 我
    )
    
    [3] => Array
    (
        [k] => 3
        [xx] => 你们
    )
    
    [4] => Array
    (
        [k] => 4
        [xx] => 我们
    )

)
******/
更多追问追答
追问

非常感谢!!!!按照您的提示,确实可以了,但是又遇到一个新问题,麻烦您再帮忙看下!

我有的字串的内容不是文字,而是图片代码,例如:

像这样调用出来以后也按照相同的格式显示出对应的图片,代码应该怎么写呢?

麻烦您再花时间教我一下,再次感谢!!!我又追加了50分!谢谢!

追答

测试了下,确实需要改进才能匹配出来,因为img标签的双引号。

<?php

function special_img_str_to_arr ($str) {
    $return = array();
    if (!is_string($str) || trim($str) == '') {
        return $return;
    }
    
    /* 扔掉img标签,保留src值 */
    $str = str_replace('http://', '', $str); // 支持含有http[s]
    $str = str_replace('https://', '', $str);
    $str = preg_replace('/<img\s*?src=[\'"]?(.*?)[\'"]\s*?\/?>/i', '$1', $str);

    /* 格式化 */
    $human_preg = '/([a-zA-Z\d]+):/i';
    $human_str = preg_replace($human_preg, '', $str);
    $human_str = str_replace(';{', ':{', $human_str);
    $human_str = str_replace(';}', '}', $human_str);
    $human_str = preg_replace('/";(["\d]+)/i', '":$1', $human_str);
    $human_str = preg_replace('/\}(\d+)/i', '},$1', $human_str);
    $human_str = str_replace(';"', ',"', $human_str);
    $human_str = preg_replace('/([^\d])(\d+):/i', '$1"$2":', $human_str);
    
    /* 转数组 */
    $arr = json_decode($human_str, true);
    if (is_array($arr) && count($arr)) {
        $return = $arr;
    }
    return $return;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式