On 18 May 2010 13:32, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote: > > 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 > > You probably overlooked the part where the OP points out he's not using ascii but utf8. If it was just ascii, using str_rot13() would be the weapon of choice I'd say (note that adding 14 to every character of an ascii string will turn lots of it into gibberish - you have to wrap round when you reach a certain point). 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> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php