【发布时间】:2018-07-09 15:31:53
【问题描述】:
我正在开发一个加密功能,只是为了好玩(用于非生产环境)。目前像这样运行我的加密功能:
encrypt("This is a string.");
产生以下字符串:
GnulHynkAfdsGknp AfdsGknp Wgbf GknpLnugBuipAfdsCbhgByfg.
这很完美,正是我想要和期望的——但是,现在我正在尝试编写一个解密函数。每个被加密的字符都会有一个大写字母,后跟 3 个非大写字母(从上面的例子可以看出)。
我的计划是运行preg_split() 来获取字符串的不同字母。
这是我当前的 PHP 代码(模式([A-Z][a-z]{3})):
print_r(preg_split("/([A-Z][a-z]{3})/", $string));
这有几个问题。在测试时,我发现它没有返回我期望的结果,返回是:
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] => .
)
(通过eval.in)
所以这有适当的回报,但它们都是空白的。为什么所有的值都是空白的?
我想到的另一件事是我需要在 preg_split() 返回中包含其他字符,例如空格、逗号、句点等。在我从 eval.in 获得的回报中,似乎包含了最后一个时期。对于空格和其他字符也是如此,还是在这些字符的情况下我需要做一些特殊的事情?
【问题讨论】:
-
尝试使用它作为你的正则表达式:
(?=[A-Z][a-z]{3})with split -
@Gurman 很好解决了空白值的问题。
标签: php regex string encryption