在php中的字符串中的textarea之间的preg_match

时间:2014-04-15 20:08:06

标签: php regex html-parsing

preg_match("/ [>](.*)[<] /", '<textarea width="500" >web scripting language of choice.</textarea>',$matches);
print_r ($matches);

我想返回“首选的网页脚本语言”。形成这个字符串。 请帮我。 到达这个 PHP

3 个答案:

答案 0 :(得分:2)

使用DOM解析器

HTML不是常规语言,无法使用正则表达式正确解析。请改用DOM解析器。以下是使用PHP的DOMDocument类完成的方法:

$html = <<<HTML
<textarea width="500" >web scripting language of choice.</textarea>
HTML;

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('textarea') as $tag) {
    var_dump($tag->nodeValue);
}

使用正则表达式

如果您完全确定标记的格式是一致的,那么正则表达式也可以正常工作。要修复正则表达式,请从模式中删除多余的空格:

preg_match("/[>](.*?)[<]/", $html, $matches);
var_dump($matches[1]);

<强>输出:

string(33) "web scripting language of choice."

Demo

答案 1 :(得分:2)

改为使用strip_tags

var_dump(strip_tags('<textarea width="500" >web scripting language of choice.</textarea>'));

答案 2 :(得分:0)

这样做:

<?
$string = '<textarea width="500" >web scripting language of choice.</textarea>';

$match = preg_replace('%<textarea width="500" >(.*?)</textarea>%i', '$1', $string );

echo $match;
//web scripting language of choice.
?>