User since
2004-06-17
305
Artikel
BenutzerIn
Hi,
ich habe folgende zwei PHP Zeilen und verstehe nicht ganz (vorallem das \x01\x09\x01\x16 ) was die machen bzw. wie ich die in Perl schreiben muss.
$tmp=preg_split("/\x01\x09\x01\x16/",$sig_decode);
$this->email= substr($tmp[1],1,ord(substr($tmp[1],0,1)));
In $sig_decode steht ein String, den ich wie folgt erhalten habe:
use MIME::Base64;
my $sig_decode = decode_base64($code);
Die erste Zeile wird wahrscheinlich ein
my @Array = split( ... , $sig_decode);
werden. Aber wie lauten die ... im split?
User since
2003-08-04
5870
Artikel
ModeratorIn
Ich kenn PHP nicht, aber hast du mal probiert, den RE einfach zu übernehmen?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2005-08-17
1420
Artikel
BenutzerIn
Das \x01 usw. ist nur die hexadezimale Schreibweise fuer bestimmte Zeichen. \x09 ist zum Beispiel in TAB. Die RegEx sollte in Perl eigentlich 1:1 funktionieren. Die Schreibweise mit \x... steht auch so in perlre drin.
User since
2004-06-17
305
Artikel
BenutzerIn
Danke Euch!
Problem gelöst. Mich haben die Slashes / am Anfang und am Ende irritiert. Weggelassen und es geht.
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Eigentlich solltest du die Anführungszeichen weglassen und die Slashes lassen.
Edit: Das sollte ich natürlich noch begründen.
preg_split() steht für "split mit Perl-kompatiblen regulären Ausdrücken". (Neben preg_split() gibt es in PHP noch mehr preg_* Funktionen.)
In Perl besteht der Standard-Begrenzer für reguläre Ausdrücke aus Schrägstrichen: /ausdruck/. Man findet sie nicht nur beim Match-Operator ($foo =~ /ausdruck/), sondern auch bei split(), da auch split als ersten Parameter einen regulären Ausdruck erwartet: split /ausdruck/, $string. Die Schrägstriche weisen hier noch extra darauf darauf hin, dass der Trennausdruck kein "normaler String" ist.
Warum benutzt man aber in PHP die Schrägstriche noch zusätzlich innerhalb der Anführungsstriche? Das liegt daran, dass auch in PHP hinter einem regulären Ausdruck noch Modifier stehen können (z.B. "i" für das Ignorieren von Groß-/Kleinschreibung oder "x", wenn Kommentare und Whitespace im Muster erlaubt sind). Diese Modifier landen dann in PHP hinter den Schrägstrichen, aber noch innerhalb der Anführungszeichen.
Und wie in Perl kann man übrigens auch in PHP andere Begrenzer als die Schrägstriche nehmen, wenn man möchte - sogar ein passendes Klammerpaar wie () oder {}.\n\n
<!--EDIT|Dubu|1145885682-->
User since
2004-06-17
305
Artikel
BenutzerIn
... danke für den Hinweis
User since
2003-08-06
2246
Artikel
ModeratorIn
[quote=nepos,24.04.2006, 12:46]Die Schreibweise mit \x... steht auch so in perlre drin.[/quote]
Und mit perlre ist ntuerlich
perlre gemeint.
Weiter gibt es
perlrequick
und
perlretut ...
User since
2005-08-17
1420
Artikel
BenutzerIn
Sorry, hatte den passenden Board-Code fuer perldoc nicht im Kopf beim eingeben in der Box fuer schnelle Antworten ;)