我想将<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]."");
我做错了什么?
答案 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>'
(请注意单引号)。