php
  • html
  • arrays
  • regex
  • string
  • 2015-09-16 22 views 6 likes 
    6

    PHPの関数は、配列のすべてのエントリに対して正規表現の置き換えを行う機能はありますか?
    私はそれらの中にテキストを含むたくさんのhtmlタグを含む配列を持っていて、タグを削除したいと思います。
    だから基本的に私はこれを変換しています:配列からすべてのhtmlタグを削除するにはどうすればよいですか?

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

    これに:

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

    (たぶん)私は削除したいすべてのものと一致する正規表現、次のようになります。

    /<.+>/sU 
    

    質問はどうやって使うべきか? (私の配列は実際には50個以上のエントリを持ち、すべてのエントリに10個のマッチがあるので、preg_replaceを使うのはおそらく行く方法ではありませんか?)

    +0

    簡単な方法を確認するオブジェクトと多次元配列のバリアントは、タグを除去することで、私は正規表現http://stackoverflow.com/questions/1732348/regexについてはよく分かりません-match-open-tags-except-xhtml-self-contained-tags – Danijel

    +0

    この質問はどこにありますか? – Rizier123

    答えて

    9

    の必要はありません、ただ単にtrim()、出力、例えば、すべてのHTMLタグを取り除くためにを使用し、

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

    Good One ..... +1 –

    1

    正規表現が必要な場合は、アプローチ:ここでの正規表現のための

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

    ここ

    
    /** 
        * @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; 
        } 
    
    
    関連する問題