Я хочу отключить метки от значения внутри 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; }
Пожалуйста, дайте мне знать, если у вас есть идеи, как это исправить. Благодаря!
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
).
(Не знаю, что такое ваша большая функция.)
попробуйте сопоставить массивы с strip_tags и обрезать.
implode("\t", array_map("trim", array_map("strip_tags", array_keys($item))));
Удаление дескрипторов легко:
$a = array('key'=>'array item<br>'); function fix(&$item, $key) { $item = strip_tags($item); } array_walk($a, 'fix'); print_r($a);
Конечно, вы можете сделать любые изменения, которые вам нравятся в $ item в функции fix. Это изменение будет сохранено в массиве.
Для многомерного массива use array_walk_recursive($a, 'fix');
,
Похоже, вам просто нужно использовать 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;