我有一个字符串被解码为base36,即0-9a-z, 任何其他字符被解码如下:一个Unicode字符代码,转换为base36和先行以大写字母“A”开头,后跟字母“B”。 如果出现多个unicode字符,则只显示最后一个字符,如果后跟'B'。PHP:需要解码一个字符串与UTF字符嵌入
例子:
[email protected]婴儿服饰.com
转换为:
zergmeA1sBwtfdA19Ahv8Ag1rAkctAub4A1aBcom
很方便,这样的数据转换,但我现在抨击我的头怎么写呢解码算法回。
我已经提供了一个将字符转换为Unicode字符的函数,它被称为'unichr($ code)';
...但我想不出找到这些字符的好方法。
我是想先用正则表达式,像:
preg_replace('/A.*?B?(?=[AB])/',"$1",$mail);
但它没有工作,我想要的方式......我还没有意识到如何又名投我的自定义功能皈依'unichr()'的比赛。
然后我也在考虑用strpos()手动查找字符,但它也变得混乱。
你能建议一些模式吗?或者我应该详细说明正则表达式还是尝试使用某个循环?我有点空白...谢谢:)
LOLMAO
就是它,看起来像我想通了,感谢你的贡献:
'/A(.*?)((?=A)|B)/'
1.我不知道这是只可转换使用正则表达式,你需要一个解析器来扫描字符串,用'分裂[AB]'并分别处理每个编码字符。 2.如果你想编码新的数据,考虑punycode算法 - 它的两个方向至少是众所周知的。 – Piskvor 2012-07-24 13:22:53
为什么不使用UTF-8编码?它返回字符串:zergme%40wtfd-%E5%A9%B4%E5%84%BF%E6%9C%8D%E9%A5%B0.com。这可以用Utf8解码器解码。 http://php.net/manual/en/function.utf8-encode.php – Pilatus 2012-07-24 13:26:16
好吧,我希望你意识到每个字形需要6个字符,即:%E5%A9只是一个字符。但对我而言,如果转换为base62,则会减少两倍。 – Anonymous 2012-07-24 13:29:30