Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP: strip the tags off the value inside array_values()

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!

like image 639
Run Avatar asked Feb 05 '11 22:02

Run


2 Answers

strip_tags only works on strings, not on array input. Thus you have to apply it after implode made a string of the input.

$output = strip_tags(
    implode("\t",
        preg_replace(
           array("/\t/", "/\s{2,}/", "/\n/"),
           array("", " ", " "),
           array_keys($item)
        )
    )
);

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.)

like image 164
mario Avatar answered Oct 13 '22 23:10

mario


try mapping the arrays to strip_tags and trim.

implode("\t", array_map("trim", array_map("strip_tags", array_keys($item))));
like image 32
jacobangel Avatar answered Oct 13 '22 23:10

jacobangel