0

<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]."");

私は何が間違っているのですか?

4

2 に答える 2

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
}

このデモから、次のことがわかります。

<abbr title="some text">Something</abbr>
于 2012-12-13T19:29:51.563 に答える
0

(一重引用符に注意)に変更"<abbr $1>$2</abbr>" します。'<abbr $1>$2</abbr>'

一重引用符で囲まれた文字列を参照してください。

于 2012-12-13T19:23:28.843 に答える