Re[6]: [PHP] preg_replace: avoiding double replacements
| From: | Andre Polykanine | Date: | Wed, 19 May 2010 13:40:17 +0000 |
| Subject: | Re[6]: [PHP] preg_replace: avoiding double replacements | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-305327@lists.php.net to get a copy of this message | ||
Ash,
Actually it's not the Caesar cypher itself (see
http://en.wikipedia.org/wiki/Temurah_(Kabbalah),
third method), but
your way of transformation seems to me the best for a while)
Thanks!
--
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule
----- Original message -----
From: Ashley Sheridan <ash@ashleysheridan.co.uk>
To: Peter Lind <peter.e.lind@gmail.com>
Date: Tuesday, May 18, 2010, 2:32:11 PM
Subject: [PHP] preg_replace: avoiding double replacements
On Tue, 2010-05-18 at 13:09 +0200, Peter Lind wrote:
> On 18 May 2010 12:35, Andre Polykanine <andre@oire.org> wrote:
> > Hello Peter,
> >
> > Hm... I see I need to specify what I'm really doing. Actually, I need
> > to change the letters in the text. It's a famous and ancient crypting
> > method: you divide the alphabet making two parts, then you change the
> > letters of one part with letters for other part (so A becomes N, B
> > becomes O, etc., and vice versa). it works fine and slightly with
> > strtr or str_replace... but only if the text is not in utf-8 and it
> > doesn't contain any non-English letters such as Cyrillic what I need.
> > What my regex does is the following: it sees an A, well it changes it
> > to N; then it goes through the string and sees an N... what does it
> > do? Surely, it changes it back to A! I hoped (in vain) that there
> > exists a modifier preventing this behavior... but it seems that it's
> > false(
> > Thanks!
>
> Hmmm, what comes to mind is using your string as an array and
> translating one character after another, building your output string
> using a lookup table. Not entirely sure how that will play with utf8
> characters, you'd have to try and see.
> I don't think you'll get any of PHPs string functions to do the work
> for you - they'll do the job in serial, not parallel.
>
> Regards
> Peter
>
> --
> <hype>
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> </hype>
>
If you're wanting to use the Caesar cypher (for that's what it is) then
why not just modify the entire string, character by character, to use a
character code n characters ahead. For example, a capital A is ascii 65,
you want to change it to an N to add 14 to that. Just keep n the same
throughout and it's easy to convert back.
Thanks,
Ash
http://www.ashleysheridan.co.uk