HTML-Entities-3.55 > HTML::Entities

名前

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

概要

 use HTML::Entities;

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

以下は例である:

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

結果は以下のようになる:

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

説明

このモジュールは、HTML文字エンティティ(実体参照)のエンコードとデコード を取り扱う。このモジュールは以下の機能を提供する:

decode_entities( $string, ... )

このルーチンは対応するユニコード文字を含む $string 中のHTMLエンティティ を置き換える。perl 5.6 とそれ以前では、Latin-1の範囲の文字のみが置き換え られる。認識できないエンティティはそのまま残る。

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

もしも、voidコンテキストが呼ばれた場合、引数はその場でデコードされる。

このルーチンは規定値でエクスポートされる。

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

これは、$string中のHTMLエンティティをその場で置き換える。%entiti2char ハッシュが提供されなければならない。%entity2char中に見つからない、名前 が付いたエンティティはそのまま残る。数字のエンティティはその値がオーバ フローするまで拡張される。

%entity2char中のキーは拡張されるエンティティ名で、その値は拡張されるべき ものである。その値は単一文字のの文字列であってはならない。もしもキーが サフィックスとして";"を持っているならば、$string中に見つかるものは、 もしも適切に";"で終了しているならば、それのみ拡張される。";"を持たない エンティティは、共通のブラウザが、Latin-1の範囲中でエンティティを取り扱う コンパチビリティのためにどのように終了したとしていても、拡張される。

もしも、$expand_prefix が TRUE であれば、%entity2char中の、末尾の";"なしの エンティティはより長い認識されない名前のプレフィックスとして、拡張される。 %entity2char中の、もっとも長い一致した名前が使われる。これは、主に、MSIE の間違った機能に対する互換のために提供されている。

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

このルーチンは規定値でエクスポートされる。

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

このルーチンはエンティティの表現と共に $string中の安全でない文字を 置き換える。2番目の引数は、どの文字が安全でないと考えられるかを提供する ことが出来る(たとえば、どれをエスケープするか)。エンコードされる規定値 の文字セットは、コントロール文字、8ビット目が設定されている文字と <, &, >, '" である。しかし、 これは、例をあげると、<, &, >, '" は以下のような形でエンコードできる。

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

このルーチンは規定値でエクスポートされる。

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

このルーチンは、encode_entitiesと同じように動作するが、置換エンティティ は常時&#xhexnum;となり、決して&entname;にならないところが 違う。例をあげると、 encode_entities("r\xF4le") は "r&ocirc;le" を 返すが、encode_entities_numeric("r\xF4le")は"r&#xF4;le"を返す。

このルーチンは規定値ではエクスポートされない。しかし、 use HTML::Entities qw(encode_entities_numeric);か、 use HTML::Entities qw(:DEFAULT encode_entities_numeric); で常にエクスポートすることが出来る。

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

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

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

これらのモジュールは、対応するエンティティ(と逆もまた同様)のための すべての文字列からのマッピングを含む $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.