我有一个字符串,它被解码为base36,即0-9a-z,任何其他字符的解码如下:unicode字符代码,转换为base36,前面是大写字母"a",后面是字母"B"。如果出现多个unicode字符,则只有最后一个后面跟着"B"。
示例:
zergme@wtfd-婴儿服饰.com
转换为:
zergmeA1sBwtfdA19Ahv8Ag1rAkctAub4A1aBcom
以这种方式转换数据很方便,但现在我正在思考如何编写解码回算法。
我已经提供了一个将charcode转换为Unicode字符的函数,它被称为"unichr($code)";
但我想不出找到这些字符的好方法。
我试着首先使用regexp,类似于:
preg_replace('/A.*?B?(?=[AB])/',"$1",$mail);
但它并没有按照我想要的方式工作。。。我也没有意识到如何在比赛中转换我的自定义转换函数,也就是"unichr()"。
然后我也在考虑用strpos()手动查找字符,但结果也很混乱。
你能建议一些模式吗?或者我是应该详细介绍regexp还是尝试使用一些循环?我有点茫然。。。谢谢:)
LOLMAO
就是这样,看起来我明白了,多亏了你的贡献:
'/A(.*?)((?=A)|B)/'
您是否考虑过使用preg_replace_callback()
?它采用一个函数而不是字符串作为替换值,并将匹配项传递给该函数,并使用该函数的返回值作为替换字符串。
松散的例子,你必须绕过一点
<?php
$str = 'zergmeA1sBwtfdA19Ahv8Ag1rAkctAub4A1aBcom';
function convert_to_unicode_cb( $match )
{
// $match1 would be 1s, 19, hv8, etc
return unichr( $match[1] );
}
preg_replace_callback( '/A(.*?)(?=A|B)/', 'convert_to_unicode_cb', $str );
如何使用Base64编码(gzcompress)和解码(gzuncompress)。
将以下内容保存为";testBase64.php":
<?php
if(isset($_POST['text'])){
echo("<b>input:</b> ".$_POST['text']."<br/>");
$c = gzcompress($_POST['text']);
echo("<b>base64 encoding:</b> .".$c."<br/>");
echo("<b>base64 decoding:</b> " .gzuncompress($c));
exit;
}
?>
<html>
<body>
<form method=post action=testBase64.php>
<input type=text name=text />
<input type=submit />
</form>
</body>
</html>
运行并输入";zergme@wtfd-婴儿服饰.com";在文本字段中。
输出:
输入:zergme@wtfd-婴儿服饰.com
base64编码:.xœ«J-JßMu
base64解码:zergme@wtfd-婴儿服饰.com
希望这能有所帮助。