1

テキストブロック内の通常の引用符を中向きの引用符に置き換えるが、htmlタグマーカー内にある引用符を変更しない方法に関する最善の解決策を探しています<....>次のようなpreg-replaceを使用しようとしました。

$pattern = '/(?<!=)"\b/';
$lyrics = preg_replace($pattern, "\u201c", $lyrics);
$pattern = '/\b"(?!>)/';
$lyrics = preg_replace($pattern, "\u201d", $lyrics);
$pattern = '/\."/'; // find regular quotes after a period
$lyrics = preg_replace($pattern, ".\u201d", $lyrics);
$pattern = '/\!"/'; // find regular quotes after an exclamation
$lyrics = preg_replace($pattern, "!\u201d", $lyrics);
$pattern = '/"\s/'; // find regular quotes before a space
$lyrics = preg_replace($pattern, "\u201d ", $lyrics);

たとえば、次のような場合です。

<a href="http://somelink.com">"This is a quotation."

私はそれを次のように終わらせたい:

<a href="http://somelink.com">“This is a quotation.”
4

2 に答える 2

1

テキストノードに簡単にアクセスできるHTMLパーサーを使用します。正規表現は、ニーズにはあまり適していません。

于 2012-04-16T15:46:16.547 に答える
0

適切に形成されていれば、xmlパーサーを使用することもできます。ただし、最初にすべてのタグを開いたり閉じたりする必要があります(またはこの方法でいくつかのタグを開く必要があります:) < /br>次に、 phpを使用してxhtmlを通常のxmlとして解析できます。

編集済み: HTMLタグを除き、ハイライトテキストが重複している可能性があります

于 2012-04-16T15:51:26.513 に答える