I want to strip the tags off the value inside array_values() before imploding with tabs.
I tried with this line below but I have an error,
$output = implode("\t",strip_tags(array_keys($item)));
ideally I want to strip off the line breaks, double spaces, tabs from the value,
$output = implode("\t",preg_replace(array("/\t/", "/\s{2,}/", "/\n/"), array("", " ", " "), strip_tags(array_keys($item))));
but I think my method is not correct!
this is the entire function,
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;
}
Please let me know if you have any ideas how to fix this. Thanks!
Looks like you just need to use array_map, since strip_tags expects a string, not an array.
try mapping the arrays to strip_tags and trim.
strip_tags
only works on strings, not on array input. Thus you have to apply it afterimplode
made a string of the input.You'll have to test if it gives you the desired results. I don't know what the preg_replace accomplishes.
Otherwise you could use
array_map("strip_tags", array_keys($item))
to have the tags removed first (if there are really any significant\t
within the tags in the strings.)(No idea what your big function is about.)
Stripping the tags is easy as this:
Of course, you can make whatever modifications you like to $item in the fix function. The change will be stored in the array.
For a multidimensional array
use array_walk_recursive($a, 'fix');
.