2015-09-16 15 views
6

Czy istnieje funkcja w php do wykonania regex wymień rodzaj działania na wszystkie wpisy tablicy?
Mam tablicę, która zawiera wiele znaczników html z tekstem w nich i chcę usunąć znaczniki.
Więc w zasadzie jestem konwersji to:Jak mogę usunąć wszystkie znaczniki html z tablicy?

$m = [ 
"<div>first string </div>", 
"<table> 
    <tr> 
    <td style='color:red'> 
     second string 
    </td> 
    </tr> 
</table>", 
"<a href='/'> 
    <B>third string</B><br/> 
</a>", 
]; 

do tego:

$m = [ 
"first string", 
"second string", 
"third string" 
] 

regex, który (mam nadzieję) pasuje do wszystkiego, co chcesz usunąć, wygląda następująco:

/<.+>/sU 

Pytanie brzmi, jak powinienem go teraz użyć? (Moja tablica ma więcej niż 50 wpisów i w każdym wpisie może być 10 dopasowań, więc użycie preg_replace prawdopodobnie nie jest możliwe, czy nie?)

+0

Prostym sposobem jest strip tagów, nie jestem pewien regex http://stackoverflow.com/questions/1732348/regex -match-open-tags-except-xhtml-self-contained-tags – Danijel

+0

Więc gdzie jesteśmy z tym pytaniem? – Rizier123

Odpowiedz

9

Nie potrzeba regex tutaj, wystarczy użyć aby pozbyć się wszystkich znaczników hTML, a następnie po prostu trim() wyjście, np

$newArray = array_map(function($v){ 
    return trim(strip_tags($v)); 
}, $m); 
+0

Dobry ... +1 –

1

Możesz po prostu wykonać następujące czynności, jeśli chcesz wyreinkować podejście:

$array = preg_replace("/<.+>/sU", "", $array); 
0

Tutaj wariant dla wielowymiarowych tablic z przedmiotem kontroli


/** 
    * @param array $input 
    * @param bool $easy einfache Konvertierung für 1-Dimensionale Arrays ohne Objecte 
    * @param boolean $throwByFoundObject 
    * @return array 
    * @throws Exception 
    */ 
    static public function stripTagsInArrayElements(array $input, $easy = false, $throwByFoundObject = true) 
    { 
     if ($easy) { 
      $output = array_map(function($v){ 
       return trim(strip_tags($v)); 
      }, $input); 
     } else { 
      $output = $input; 
      foreach ($output as $key => $value) { 
       if (is_string($value)) { 
        $output[$key] = trim(strip_tags($value)); 
       } elseif (is_array($value)) { 
        $output[$key] = self::stripTagsInArrayElements($value); 
       } elseif (is_object($value) && $throwByFoundObject) { 
        throw new Exception('Object found in Array by key ' . $key); 
       } 
      } 
     } 
     return $output; 
    } 

Powiązane problemy