为什么我的Regexp-Code不显示HTML代码?

时间:2012-12-13 19:07:28

标签: php regex preg-replace

我想将<var title="some text">Something</var>更改为<abbr title="some text">Something</abbr>。我有这个代码,但不知怎的,它没有在我的网页上显示abbr标签:

$arr[0] = preg_replace("#<var(.*?)>(.*?)</var>#", "<abbr $1>$2</abbr>", "".$arr[0]."");

我做错了什么?

2 个答案:

答案 0 :(得分:2)

是的,您应该使用HTML解析器,并避免使用正则表达式来解析HTML:

// Load the HTML into the parser
$doc = new DOMDocument;
$doc->loadHTML( '<var title="some text">Something</var>');

// Find the <var> tags, and create new <abbr> tags from them.
foreach( $doc->getElementsByTagName( 'var') as $var) {
    $abbr = $doc->createElement( 'abbr', $var->textContent);
    $abbr->setAttribute( 'title', $var->getAttribute( 'title'));
    echo $doc->saveHTML( $abbr); // Here is your new <abbr> tag
}

您可以从this demo看到这会产生:

<abbr title="some text">Something</abbr>

答案 1 :(得分:0)

"<abbr $1>$2</abbr>"更改为'<abbr $1>$2</abbr>'(请注意单引号)。

请参阅single quoted strings