/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Problem med erstatning af tekst
Fra : Jette


Dato : 29-04-03 19:41

Jeg har en online newsreader som jeg henter indlæg til vha. et perlscript.
Jeg er hjemmevant i PHP, men ny udi Perls fortræffeligheder, og har lidt
problemer med erstatning af tekst.

Da nogen af brugerne sender indlæg med qp, har jeg lavet en lille funktion
der gør teksten læsevenlig....

Følgende sætning...

=?IS0-8859-1?Q?s=E6t =F8en p=E5 en h'a\"t=3A=2F=2C og =29s=C6t=28 s=C6t
=D8en p=C5 en hat=2E?=

.... skulle gerne blive til

sæt øen på en hat:/, og (sÆt) sÆt Øen pÅ en hat.

Ved godt det er volapyk, men min lille test skulle jo indeholde en masse
sære danske bogstaver

Herunder er funktionen der behandler teksten ... den virker fint, bortset
fra, at den af én eller anden grund ikke fjerner =?IS0-8859-1?Q? fra
sætningens start. Nogen der kan se hvorfor?

sub qp_converter {
my $subject=$_[0];
$subject =~ s/=2E/./g;
$subject =~ s/=E5/å/g;
$subject =~ s/=E6/æ/g;
$subject =~ s/=3F/\?/g;
$subject =~ s/=C5/Å/g;
$subject =~ s/=C6/Æ/g;
$subject =~ s/=D8/Ø/g;
$subject =~ s/=F8/ø/g;
$subject =~ s/=2C/,/g;
$subject =~ s/=2F/\//g;
$subject =~ s/=3A/:/g;
$subject =~ s/=28/\)/g;
$subject =~ s/=29/\(/g;
$subject =~ s/\?=/ /g;
$subject =~ s/_/ /g;
$subject =~ s/=\?ISO-8859-1\?Q\?//g;
$subject =~ s/=\?ISO-8859-1\?B\?//g;
return $subject;
}

Mvh. Jette



 
 
Adam Sjøgren (29-04-2003)
Kommentar
Fra : Adam Sjøgren


Dato : 29-04-03 19:51

On Tue, 29 Apr 2003 20:41:01 +0200, Jette wrote:

> =?IS0-8859-1?Q?s=E6t =F8en p=E5 en h'a\"t=3A=2F=2C og =29s=C6t=28 s=C6t
^
Dette er et nul ('0'), ikke et 'O'... måske er det grunden?

> $subject =~ s/=\?ISO-8859-1\?Q\?//g;
^
Her har du 'O'

I stedet for kun at udskifte de kombinationer du har listet op, var
det måske en idé at læse hex-tallet og konvertere det; så virker din
funktion for samtlige tegn, ikke kun dem du tilfældigvis har listet.

Hvis du ikke orker at finde ud af hvordan man gør det, så kan
MIME::QuotedPrint f.ex. hjælpe dig:

$ perl -MMIME::QuotedPrint -e 'print decode_qp("Fr=E6kke fr=F8l=E5r"), "\n"'
Frække frølår
$

Hvis du hellere vil have en løsning til hele problemet, så kan
MIME::WordDecoder fra MIME-Tools være til hjælp:

<http://search.cpan.org/author/ERYQ/MIME-tools-5.411a/lib/MIME/WordDecoder.pm>

Ex.:

$ perl -MMIME::WordDecoder -e 'print unmime("=?ISO-8859-1?Q?Fr=E6kke fr=F8l=E5r?="), "\n"'
Frække frølår
$

I det hele taget er der et væld af moduler på cpan.org, som kan en
masse af de ting man lige har brug for i en snæver vending.

> $subject =~ s/=\?ISO-8859-1\?B\?//g;

Din funktion fjerner indledningen af Base64-encodede strenge, men den
burde vel egentlig afkode dem først/også?


Mvh.

--
"One little moment when nothing can hurt" Adam Sjøgren
asjo@koldfront.dk

Jette (29-04-2003)
Kommentar
Fra : Jette


Dato : 29-04-03 20:42

"Adam Sjøgren" skrev:

> > =?IS0-8859-1?Q?s=E6t =F8en p=E5 en h'a\"t=3A=2F=2C og =29s=C6t=28 s=C6t
> ^
> Dette er et nul ('0'), ikke et 'O'... måske er det grunden?
>
> > $subject =~ s/=\?ISO-8859-1\?Q\?//g;
> ^
> Her har du 'O'

Kors i hytten hvor kan man være dum ... Tak for det

> Hvis du hellere vil have en løsning til hele problemet, så kan
> MIME::WordDecoder fra MIME-Tools være til hjælp:
>
>
<http://search.cpan.org/author/ERYQ/MIME-tools-5.411a/lib/MIME/WordDecoder.p
m>

Jo, tak - det ville da helt klart være en bedre løsning ... Jeg vil
straks give kæresten mit
"vil-du-ikke-nok-lige-fikse-et-nyt-perl-modul-til-mig" -blik

> I det hele taget er der et væld af moduler på cpan.org, som kan en
> masse af de ting man lige har brug for i en snæver vending.
>
> > $subject =~ s/=\?ISO-8859-1\?B\?//g;
>
> Din funktion fjerner indledningen af Base64-encodede strenge, men den
> burde vel egentlig afkode dem først/også?
>

Jo, men jeg startede med at Quoted Printables, for dem kan man umiddelbart
oversætte... men jeg gav op overfor Base64-encodede strenge... de gav slet
ikke mening :-/ .... men nu bliver det hele forhåbentlig lidt nemmere ....
hurra for Perlmoduler!

Mvh. Jette



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste