我想在使用制表符进行内爆之前从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;
}
如果您有任何想法如何解决此问题,请与我们联系。谢谢!
答案 0 :(得分: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
。)
(不知道你的大功能是什么。)
答案 1 :(得分:3)
尝试将数组映射到strip_tags和trim。
implode("\t", array_map("trim", array_map("strip_tags", array_keys($item))));
答案 2 :(得分:2)
剥离标签非常简单:
$a = array('key'=>'array item<br>');
function fix(&$item, $key)
{
$item = strip_tags($item);
}
array_walk($a, 'fix');
print_r($a);
当然,您可以在修复功能中对$ item进行任何修改。更改将存储在数组中。
对于多维数组use array_walk_recursive($a, 'fix');
。
答案 3 :(得分: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;