jim9
jim9

Reputation:

What is the best way to strip out all html tags from a string?

Using PHP, given a string such as: this is a <strong>string</strong>; I need a function to strip out ALL html tags so that the output is: this is a string. Any ideas? Thanks in advance.

Upvotes: 4

Views: 1402

Answers (4)

Stephen Fuhry
Stephen Fuhry

Reputation: 13009

I find this to be a little more effective than strip_tags() alone, since strip_tags() will not zap javascript or css:

$search = array(
    "'<head[^>]*?>.*?</head>'si",
    "'<script[^>]*?>.*?</script>'si",
    "'<style[^>]*?>.*?</style>'si",
);
$replace = array("","",""); 
$text = strip_tags(preg_replace($search, $replace, $html));

Upvotes: 0

Mez
Mez

Reputation: 24923

strip_tags is the function you're after. You'd use it something like this

$text = '<strong>Strong</strong>';
$text = strip_tags($text);
// Now $text = 'Strong'

Upvotes: 1

Pascal MARTIN
Pascal MARTIN

Reputation: 400912

What about using strip_tags, which should do just the job ?

For instance (quoting the doc) :

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

will give you :

Test paragraph. Other text

Edit : but note that strip_tags doesn't validate what you give it. Which means that this code :

$text = "this is <10 a test";
var_dump(strip_tags($text));

Will get you :

string 'this is ' (length=8)

(Everything after the thing that looks like a starting tag gets removed).

Upvotes: 5

Paolo Bergantino
Paolo Bergantino

Reputation: 488344

PHP has a built-in function that does exactly what you want: strip_tags

$text = '<b>Hello</b> World';
print strip_tags($text); // outputs Hello World

If you expect broken HTML, you are going to need to load it into a DOM parser and then extract the text.

Upvotes: 11

Related Questions