PHP: разделите теги на значение внутри array_values ​​()

Я хочу отключить метки от значения внутри 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; } 

Пожалуйста, дайте мне знать, если у вас есть идеи, как это исправить. Благодаря!

Solutions Collecting From Web of "PHP: разделите теги на значение внутри array_values ​​()"

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;