剥离标签(<和>)

时间:2014-02-17 10:34:07

标签: php regex variables str-replace

我正在寻找一种方法来剥离<>以及PHP之间的所有内容。并将其保存为变量。

示例:

从这个: <p>This is a paragraph with <strong>bold</strong> text</p>

对此: This is a paragraph with bold text

任何人都有一个例子或想法?谢谢!

3 个答案:

答案 0 :(得分:4)

如果您没有嵌套><,那么您可以尝试以下方法来匹配事件:

$matches = array();
preg_match_all('/<([\s\S]*?)>/s', $string, $matches);

尝试你的here。请注意查询中的?,它使括号中的匹配不合适。 您可以找到类似问题的答案here on SO

如果要删除值,请使用preg_replace_callback

<?php
$string = '&lt;p&gt;This is a paragraph with &lt;strong&gt;bold&lt;/strong&gt; text&lt;p&gt;';
echo "$string <br />";
$string = preg_replace_callback(
        '/&lt;([\s\S]*?)&gt;/s',
        function ($matches) {
            // do whatever you need with $matches here, e.g. save it somewhere
            return '';
        },
        $string
    );
echo $string;
?>

答案 1 :(得分:0)

&lt;编码是html编码。要处理这个问题,你需要html_entity_decode()来解码或者htmlentities()来编码。

答案 2 :(得分:-1)

这样的事情:

$matches = array();
// Save
preg_match_all('!(<[^>]++>)!', $string, $matches);
// Strip
$string = strip_tags($string);

或者将<替换为&lt;,将>替换为&gt;,如果这不是拼写错误,并且您希望对已转义的字符串进行操作并使用preg_replace('/(&lt;.+?&gt;)/', '', $string)剥离标签。