PHP:去掉数组_values()中的值的标记
在使用选项卡内爆之前,我想去掉数组_values()中的值的标记 我试着用下面这行,但我有一个错误PHP:去掉数组_values()中的值的标记,php,arrays,preg-replace,implode,strip-tags,Php,Arrays,Preg Replace,Implode,Strip Tags,在使用选项卡内爆之前,我想去掉数组_values()中的值的标记 我试着用下面这行,但我有一个错误 $output = implode("\t",strip_tags(array_keys($item))); 理想情况下,我希望从值中去掉换行符、双空格和制表符 $output = implode("\t",preg_replace(array("/\t/", "/\s{2,}/", "/\n/"), array("", " ", " "), strip_tags(array_keys($ite
$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;
}
请让我知道,如果你有任何想法如何解决这个问题。谢谢
strip_标记
仅适用于字符串,不适用于数组输入。所以,您必须在内爆
生成一个输入字符串后应用它
$output = strip_tags(
implode("\t",
preg_replace(
array("/\t/", "/\s{2,}/", "/\n/"),
array("", " ", " "),
array_keys($item)
)
)
);
你必须测试它是否能给你想要的结果。我不知道preg_替换完成了什么
否则,您可以使用array\u map(“strip\u tags”,array\u key($item))
首先删除标记(如果字符串中的标记中确实存在任何重要的\t
)
(不知道你的大功能是关于什么的。)剥离标签很简单,如下所示:
$a = array('key'=>'array item<br>');
function fix(&$item, $key)
{
$item = strip_tags($item);
}
array_walk($a, 'fix');
print_r($a);
$a=array('key'=>'array item
');
函数修复(&$item,$key)
{
$item=带标签($item);
}
数组_walk($a,“fix”);
印刷费($a);
当然,您可以在fix函数中对$item进行任何修改。更改将存储在数组中
对于多维数组
使用array_walk_recursive($a,'fix')代码>尝试将数组映射到strip_标记和trim
implode("\t", array_map("trim", array_map("strip_tags", array_keys($item))));
看起来您只需要使用array\u map,因为strip\u标记需要字符串,而不是数组
$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;
非常感谢!此功能用于导出excel文件。但是当我在值中有标记、换行符等时,它会导致“bug”。函数fix()中$key的用途是什么?它似乎没有使用这个变量。谢谢。array\u walk
将调用回调函数并向其传递项和键。当您不声明$key
时,PHP可能会优雅地忽略它,因此您可以将其忽略。四年过去了,我不记得原因了,但如果我不得不猜测,要么a)我想证明你在第二个论点中得到了关键,以防你需要它,b)我觉得这种方式更严格、更完整,我更喜欢,或者c)我基于一些包含关键的片段,我甚至没有注意到。:)是的,当然,4年是相当长的一段时间,所以感谢您的回复,我从未尝试过使用array_walk,所以很高兴了解它。