Thread packet für html-sonderzeichen gesucht (2 answers)
Opened by jan99 at 2010-09-02 10:03

jan99
 2010-09-02 10:03
#141105 #141105
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
HI !

ich habe einmal eine pm bekommen um dem Problem der Sonderzeichen im Webbereich Herr zu werden.

Leider werden nicht alle Sonderzeichen abgedeckt und darüberhinaus wäre der Zugriff auf ein Standard-Packet sicherlich sehr sinnvoll.

Kann mir einer von Euch weiterhelfen ?

Nachfolgend der Code auszugsweise um vielleicht besser zu verstehen was ich meine.

Gruß Jan :-)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package encode_html;
use strict;
use warnings;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK) ;

$VERSION = '1.0' ;
require Exporter ;
@ISA = qw ( Exporter AutoLoader ) ;
@EXPORT = qw (string2html) ;


# Liste der bekannten HTML-zeichen:
my %xmlchars=(
              '<'       =>'&lt;',       '>'       =>'&gt;',       "'"       =>'&apos;',     '"'       =>'&quot;',     '&'       =>'&amp;',
              "\x{27}"  =>'&apos;',     "\x{22}"  =>'&quot;',     "\x{A0}"  =>'&nbsp;',     "\x{A1}"  =>'&iexcl;',    "\x{A2}"  =>'&cent;',
              "\x{A3}"  =>'&pound;',    "\x{A4}"  =>'&curren;'
# , ....
               );
my $xmlcharstring='['.join('',keys(%xmlchars)).']';

# nicht ASCII und Unbekannte zeichen Quoten
sub string2html
{
    my $str=shift;

    # already quoted transform to ignore
    $str=~s/&(#?\w+);/-!=$1=!-/gs;

    # replace known UTF-8
    $str=~s/($xmlcharstring)/$xmlchars{$1}/gse;

    # quote unknown UTF-8
    $str=~s/([^\x20-\x7F])/'&#' . ord($1) . ';'/gse;

    # transorm back already quoted
    $str=~s/-!=(#?\w+)=!-/&$1;/gs;

    return $str;
}

1;
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread packet für html-sonderzeichen gesucht