7

我想在使用制表符内爆之前将标签从 array_values() 中的值剥离。

我尝试使用下面的这一行,但出现错误,

$output = implode("\t",strip_tags(array_keys($item)));

理想情况下,我想从值中去掉换行符、双空格、制表符,

$output = implode("\t",preg_replace(array("/\t/", "/\s{2,}/", "/\n/"), array("", " ", " "), strip_tags(array_keys($item))));

但我认为我的方法不正确!

这是整个功能,

function process_data($items){

    # set the variable
    $output = null;

    # check if the data is an items and is not empty
    if (is_array($items)  && !empty($items))
    {
        # start the row at 0
        $row = 0;

        # loop the items
        foreach($items as $item)
        {
            if (is_array($item) && !empty($item))
            {
                if ($row == 0)
                {
                    # write the column headers
                    $output = implode("\t",array_keys($item));
                    $output .= "\n";
                }

                # create a line of values for this row...
                $output .= implode("\t",array_values($item));
                $output .= "\n";

                # increment the row so we don't create headers all over again
                $row++;
            }
        }       
    }

    # return the result
    return $output;
}

如果您有任何解决此问题的想法,请告诉我。谢谢!

4

4 回答 4

3

strip_tags仅适用于字符串,不适用于数组输入。因此,您必须implode在输入字符串后应用它。

$output = strip_tags(
    implode("\t",
        preg_replace(
           array("/\t/", "/\s{2,}/", "/\n/"),
           array("", " ", " "),
           array_keys($item)
        )
    )
);

你必须测试它是否能给你想要的结果。我不知道 preg_replace 完成了什么。

否则,您可以先删除标签(如果字符串中的标签array_map("strip_tags", array_keys($item))确实有任何重要意义。)\t

(不知道你的大功能是什么。)

于 2011-02-05T22:53:15.587 回答
3

尝试将数组映射到 strip_tags 并修剪。

implode("\t", array_map("trim", array_map("strip_tags", array_keys($item))));
于 2011-02-05T22:57:22.720 回答
2

剥离标签很容易,如下所示:

$a = array('key'=>'array item<br>');

function fix(&$item, $key)
{
    $item = strip_tags($item);
}

array_walk($a, 'fix');

print_r($a);

当然,您可以在 fix 函数中对 $item 进行任何您喜欢的修改。更改将存储在数组中。

对于多维数组use array_walk_recursive($a, 'fix');

于 2011-02-05T22:53:21.373 回答
1

看起来您只需要使用 array_map,因为 strip_tags 需要一个字符串,而不是一个数组。

$arr = array(   "Some\tTabbed\tValue" => '1',
                "Some  value  with  double  spaces" => '2',
                "Some\nvalue\nwith\nnewlines" => '3',
            );

$search = array("#\t#", "#\s{2,}#", "#\n#");
$replace = array("", " ", " ");
$output = implode("\t", preg_replace($search, $replace, array_map('strip_tags', array_keys($arr))));
echo $output;
于 2011-02-05T23:01:28.117 回答