HTML-Parser-3.66 > HTML::Entities
Other versions:


HTML::Entities - Encode or decode strings with HTML entities

HTML::Entities - HTML 実体参照文字列をエンコード/デコードする


 use HTML::Entities;

 $a = "Våre norske tegn bør &#230res";
 encode_entities($a, "\200-\377");

For example, this:


 $input = "vis-à-vis Beyoncé's naïve\npapier-mâché résumé";
 print encode_entities($input), "\n"

Prints this out:


 vis-à-vis Beyoncé's naïve
 papier-mâché résumé


This module deals with encoding and decoding of strings with HTML character entities. The module provides the following functions:

このモジュールは、HTML 文字実体参照のエンコードとデコードを扱います。 このモジュールは以下の機能を提供します:

decode_entities( $string, ... )

This routine replaces HTML entities found in the $string with the corresponding Unicode character. Under perl 5.6 and earlier only characters in the Latin-1 range are replaced. Unrecognized entities are left alone.

このルーチンは $string 中の HTML 実体参照を対応する Unicode 文字に 置き換えます。 perl 5.6 およびそれ以前では、Latin-1 の範囲の文字のみが置き換えられます。 認識できない実体参照はそのまま残ります。

If multiple strings are provided as argument they are each decoded separately and the same number of strings are returned.

引数として複数の文字列が提供された場合、 それらは個別にデコードされ、同じ数の文字列が返ります。

If called in void context the arguments are decoded in-place.


This routine is exported by default.


_decode_entities( $string, \%entity2char )
_decode_entities( $string, \%entity2char, $expand_prefix )

This will in-place replace HTML entities in $string. The %entity2char hash must be provided. Named entities not found in the %entity2char hash are left alone. Numeric entities are expanded unless their value overflow.

これは、$string の中の HTML 実体参照をその場で置き換えます。 %entiti2char ハッシュが提供されなければなりません。 %entity2char 中に見つからない、名前が付いた実体参照はそのまま残ります。 数値実体参照はその値がオーバーフローしない限り展開されます。

The keys in %entity2char are the entity names to be expanded and their values are what they should expand into. The values do not have to be single character strings. If a key has ";" as suffix, then occurrences in $string are only expanded if properly terminated with ";". Entities without ";" will be expanded regardless of how they are terminated for compatibility with how common browsers treat entities in the Latin-1 range.

%entity2char のキーは展開される実体参照名で、値はそれが展開されたものです。 その値は単一文字のの文字列である必要はありません。 キーが接尾辞として ";" を持っているなら、$string 中にあるものは、 適切に ";" で終端しているもののみ、展開されます。 ";" を持たない実体参照は、一般的なブラウザが、Latin-1 の範囲中で どのように実体参照を取り扱うかとの互換性のために、 どのように終端されているとしても、展開されます。

If $expand_prefix is TRUE then entities without trailing ";" in %entity2char will even be expanded as a prefix of a longer unrecognized name. The longest matching name in %entity2char will be used. This is mainly present for compatibility with an MSIE misfeature.

$expand_prefix が真であれば、%entity2char の中の、末尾の ";" なしの 実体参照は、より長い認識されない名前の接頭辞としても展開されます。 %entity2char 中の、もっとも長い一致した名前が使われます。 これは、主に、MSIE の間違った機能に対する互換性のために提供されています。

   $string = "foo&nbspbar";
   _decode_entities($string, { nb => "@", nbsp => "\xA0" }, 1);
   print $string;  # will print "foo bar"

This routine is exported by default.


encode_entities( $string )
encode_entities( $string, $unsafe_chars )

This routine replaces unsafe characters in $string with their entity representation. A second argument can be given to specify which characters to consider unsafe. The unsafe characters is specified using the regular expression character class syntax (what you find within brackets in regular expressions).

このルーチンは $string 中の安全でない文字を 実体参照表現で置き換えます。 2 番目の引数は、どの文字が安全でないと考えられるかを指定できます。 安全でない文字は、正規表現文字クラス文法 (正規表現で大かっこの中にあるもの)を使って指定できます。

The default set of characters to encode are control chars, high-bit chars, and the <, &, >, ' and " characters. But this, for example, would encode just the <, &, >, and " characters:

エンコードされるデフォルトの文字集合は、制御文字、8 ビット目が 設定されている文字と <, &, >, '" です。 しかし例えば、次のものは <, &, >, ', " 文字を 単に エンコードします:

  $encoded = encode_entities($input, '<>&"');

and this would only encode non-plain ascii:

そして次のものは非プレーン ASCII 文字のみをエンコードします:

  $encoded = encode_entities($input, '^\n\x20-\x25\x27-\x7e');

This routine is exported by default.


encode_entities_numeric( $string )
encode_entities_numeric( $string, $unsafe_chars )

This routine works just like encode_entities, except that the replacement entities are always &#xhexnum; and never &entname;. For example, encode_entities("r\xF4le") returns "r&ocirc;le", but encode_entities_numeric("r\xF4le") returns "r&#xF4;le".

このルーチンは、encode_entities と同じように動作しますが、 置換される実体参照は常時 &#xhexnum; となり、決して &entname; にならないところが違います。 例えば、encode_entities("r\xF4le") は "r&ocirc;le" を返しますが、 encode_entities_numeric("r\xF4le") は "r&#xF4;le" を返します。

This routine is not exported by default. But you can always export it with use HTML::Entities qw(encode_entities_numeric); or even use HTML::Entities qw(:DEFAULT encode_entities_numeric);

このルーチンはデフォルトではエクスポート されません。 しかし、use HTML::Entities qw(encode_entities_numeric); か、 use HTML::Entities qw(:DEFAULT encode_entities_numeric); で 常にエクスポートできます。

All these routines modify the string passed as the first argument, if called in a void context. In scalar and array contexts, the encoded or decoded string is returned (without changing the input string).

上記のすべてのルーチンは、無効コンテキストとして呼ばれた場合、 最初の引数として渡された文字列を変更します。 スカラまたは配列コンテキスト中では、(入力文字列の変更なしに) エンコードまたはデコードされた文字列が戻ります。

If you prefer not to import these routines into your namespace, you can call them as:

名前空間にそれらのルーチンをインポートしたくないのであれば、 それらを以下のように呼び出すことが出来ます:

  use HTML::Entities ();
  $decoded = HTML::Entities::decode($a);
  $encoded = HTML::Entities::encode($a);
  $encoded = HTML::Entities::encode_numeric($a);

The module can also export the %char2entity and the %entity2char hashes, which contain the mapping from all characters to the corresponding entities (and vice versa, respectively).

モジュールはまた、すべての文字から対応する実体参照(およびその逆)への マッピングを含む %char2entity と %entity2char ハッシュも エクスポートできます。


Copyright 1995-2006 Gisle Aas. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.