2 Stimmen

Entfernen der "<"- und ">"-Tags aus einem Array in php

Ich habe ein Array wie dieses:

Array
(
    [0] => "<one@one.com>"
    [1] => "<two@two.co.in>"
    [2] => "<three@hello.co.in>"
)

Jetzt möchte ich entfernen "<" y ">" aus dem obigen Array, so dass es wie folgt aussieht

Array
(
    [0] => "one@one.com"
    [1] => "two@two.co.in"
    [2] => "three@hello.co.in"
)

Wie macht man das in php? Bitte helfen Sie mir weiter.

Ich benutze array_filter() Gibt es einen einfacheren Weg, dies zu tun, außer array_filter() ?

0 Stimmen

Uhmmm... was wollen Sie aus dem ersten Array entfernen? Für mich ist es leer...

0 Stimmen

Macht nichts. Pekka hat es gerade bearbeitet.

7voto

Pekka Punkte 429407

Du könntest einen array_walk darauf machen:

// Removes starting and trailing < and > characters

 function trim_gt_and_lt(&$value) 
{ 
    $value = trim($value, "<>"); 
}

array_walk($array, 'trim_gt_and_lt');

Beachten Sie jedoch, dass dies zu auch Start entfernen > und nachlaufende < was vielleicht nicht das ist, was Sie wollen.

0 Stimmen

Dadurch werden auch führende > und nachgestellte < entfernt. Ist es das, was der Auftraggeber will?

0 Stimmen

Man könnte es wahrscheinlich sogar mit einer anonymen Funktion in array_walk() machen, aber ich kann jetzt nicht nachschauen und testen.

0 Stimmen

@cletus, gutes Argument. Ich nehme an, in seinem Datensatz ist es irrelevant, aber trotzdem. +1 zu Ihrer Lösung und fügte einen Vorbehalt zu meiner hinzu.

5voto

cletus Punkte 596503

Erstens: Wenn Sie Werte ändern wollen, müssen Sie array_map() Sie wollen, nicht array_filter() . array_filter() entfernt oder behält selektiv Array-Einträge.

$output = array_map('remove_slashes', $input);

function remove_slashes($s) {
  return preg_replace('!(^<|>$)!', '', $s);
}

Sie können dies natürlich auch mit einer einfachen foreach auch eine Schleife.

4 Stimmen

Heißt das nicht spitze Klammern ?

1voto

Residuum Punkte 11604

str_replace eine Option ist, oder jede andere Ersetzungsfunktion in PHP wie preg_replace usw.

0voto

ghostdog74 Punkte 305138

Sie gehen das Feld durch und machen es eins nach dem anderen?

$arr = array( "<one@one.com>", "<two@two.co.in>" ,"<three@hello.co.in>");
foreach ($arr as $k=>$v){
    $arr[$k] = trim($v,"<>") ;
}
print_r($arr);

Ausgabe

$ php test.php
Array
(
    [0] => one@one.com
    [1] => two@two.co.in
    [2] => three@hello.co.in
)

0 Stimmen

Haben Sie diese Funktion angewendet oder einfach nur die Ausgabe geschrieben, die ich haben möchte?

0 Stimmen

Was meinen Sie? Wie Sie an meiner Ausgabe sehen können, tut es, was Sie wollen.

0voto

AntonioCS Punkte 8100

Warum verwenden Sie nicht einfach str_replace

$teste = array("<one@one.com>","<two@two.co.in>","<three@hello.co.in>");
var_dump(str_replace(array('<','>'),'',$teste));

Wird ausgedruckt

array
  0 => string 'one@one.com' (length=11)
  1 => string 'two@two.co.in' (length=13)
  2 => string 'three@hello.co.in' (length=17)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X