Search code examples
phpstrip

How to strip HTML tags, CSS from a string?


I have string such as

<p>
    <style type="text/css">
P { margin-bottom: 0.21cm; direction: ltr; color: rgb(0, 0, 0); }P.western { font-family: "Times New Roman",serif; font-size: 12pt; }P.cjk { font-family: "Arial Unicode MS",sans-serif; font-size: 12pt; }P.ctl { font-family: "Tahoma"; font-size: 12pt; }    </style>
</p>
<p align="CENTER" class="western" style="margin-bottom: 0cm">
    <font size="5" style="font-size: 20pt"><u><b> TEXT I WANT TO GET </b></u></font></p>

How can i strip html, css and get only text?

Im aware of strip_tags(), and I can write function with preg_replace, but is there a working solution for php? Thanks.


Solution

  • Use:

    <?php
    
    $text = '<p>
        <style type="text/css">
    P { margin-bottom: 0.21cm; direction: ltr; color: rgb(0, 0, 0); }P.western { font-family: "Times New Roman",serif; font-size: 12pt; }P.cjk { font-family: "Arial Unicode MS",sans-serif; font-size: 12pt; }P.ctl { font-family: "Tahoma"; font-size: 12pt; }    </style>
    </p>
    <p align="CENTER" class="western" style="margin-bottom: 0cm">
        <font size="5" style="font-size: 20pt"><u><b> TEXT I WANT TO GET </b></u></font></p>';
    
    $text = strip_tags($text,"<style>");
    
    $substring = substr($text,strpos($text,"<style"),strpos($text,"</style>")+2);
    
    $text = str_replace($substring,"",$text);
    $text = str_replace(array("\t","\r","\n"),"",$text);
    $text = trim($text);
    
    echo $text;
    
    ?>