Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zaawansowana filtracja stringu
Forum PHP.pl > Forum > PHP
elmozaur
Witajcie.
W czasie moich zmagan z konwersjia html do pdf doszedlem do etapu w ktorym potrzebuje wyfiltrowac ze stringu pewne informacje.
Aby lepiej pokazac o co mi chodzi pokaze zmienne:

mam takie zmienne
  1. <?php
  2. $text1='<p style="color:white">a1</p>';
  3. $text2='<p style="margin-top:2cm">a1</p>';
  4. $text3='<div style="border:solid 1px green">a1</div>';
  5. ?>


w wyniku filtracji chce uzyskac:
  1. <?php
  2. $text1='<p>a1</p>';
  3. $text2='<p>a1</p>';
  4. $text3='<div>a1</div>';
  5. ?>


Czy jakims wyrazeniem regularnym mozna wykasowac style w tagach ?
za info dziekuje i pozdrawiam
peter_zan
Google?questionmark.gif

  1. <?php
  2. function stripArgumentFromTags( $htmlString ) {
  3.    $regEx = '/([^<]*<s*[a-z](?:[0-9]|[a-z]{0,9}))(?:(?:s*[a-z-]{2,14}s*=s*(?:"[^"]*"|'[^']*'))*)(s*/?>[^<]*)/i'; // match any start tag
  4.  
  5.    $chunks = preg_split($regEx, $htmlString, -1,  PREG_SPLIT_DELIM_CAPTURE);
  6.    $chunkCount = count($chunks);
  7.  
  8.    $strippedString = '';
  9.    for ($n = 1; $n < $chunkCount; $n++) {
  10.        $strippedString .= $chunks[$n];
  11.    }
  12.  
  13.    return $strippedString;
  14. }

Źródło.

pzdr
PZ
TheaSiX
wystarczy jednak, że ktoś zapomni wartości atrybutów dać w cudzysłów i kod jest do niczego..
Fifi209
Spróbuj tak:

Kod
preg_match_all('/^<([a-z]+)(.*)>(.*)<\/([a-z]+)>$/i', $_GET['html'], $matches, PREG_PATTERN_ORDER);
    
    echo '<pre>';
        print_r($matches);
    echo '</pre>';


U mnie chodzi haha.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.