On Wed, 2010-05-19 at 16:40 +0300, Andre Polykanine wrote: > 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@xxxxxxxxxxxxxxxxxxxx> > To: Peter Lind <peter.e.lind@xxxxxxxxx> > Date: Tuesday, May 18, 2010, 2:32:11 PM > Subject: 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@xxxxxxxx> 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 > > > > http://en.wikipedia.org/wiki/Caesar_cypher This is what I was suggesting, which appears to be the same as the third method (Albam) of the Temurah cypher. Thanks, Ash http://www.ashleysheridan.co.uk