しかし、これはあなたがしたいと思うべきである
の内容を分けなければなりません。私はPHPの知識が限られているので、これは手順を示しています。
$tags =
' <
(?:
/?\w+\s*/?
| \w+\s+ (?:".*?"|\'.*?\'|[^>]*?)+\s*/?
| !(?:DOCTYPE.*?|--.*?--)
)>
';
$scripts =
' <
(?:
(?:script|style) \s*
| (?:script|style) \s+ (?:".*?"|\'.*?\'|[^>]*?)+\s*
)>
.*?
</(?:script|style)\s*>
';
$regex =/($scripts | $tags) | ((?:(?!$tags).)+) /xsg;
置換文字列は、グループ1は(コンテンツ、グループ2の文字列が渡される)あなたの ワードラップ関数の戻り値にcattedある そうのようなもの:交換= \ 1。テキストラップ(\ 2)
テキストラップの内部では、コンテンツの処理方法を決定します。
は(ところで、その非常に遅く、明確にするために骨抜き)Perlでテスト済み:
use strict;
use warnings;
my $tags =
' <
(?:
/?\w+\s*/?
| \w+\s+ (?:".*?"|\'.*?\'|[^>]*?)+\s*/?
| !(?:DOCTYPE.*?|--.*?--)
)>
';
my $scripts =
' <
(?:
(?:script|style) \s*
| (?:script|style) \s+ (?:".*?"|\'.*?\'|[^>]*?)+\s*
)>
.*?
</(?:script|style)\s*>
';
my $html = join '', <DATA>;
while ($html =~/($scripts | $tags) | ((?:(?!$tags).)+) /xsg) {
if (defined $2 && $2 !~ /^\s+$/) {
print $2,"\n";
}
}
出典
2011-01-13 21:36:59
sln
あなたがHTMLを解析する必要があるとしています。検索をすると、ちょうど約1000の記事がここにあります。たぶんstrip_tagsを使って折り返して元のものに戻すことができます... – profitphp