str_replace
让我们一一分析参数。
range('-',T)
该range()
函数返回一个数组,其中包含从第一个参数到第二个参数的元素。字符由它们的 ASCII 值来考虑,所以结果是
Array
(
[0] => -
[1] => .
[2] => /
[3] => 0
[4] => 1
[5] => 2
[6] => 3
[7] => 4
[8] => 5
[9] => 6
[10] => 7
[11] => 8
[12] => 9
[13] => :
[14] => ;
[15] => <
[16] => =
[17] => >
[18] => ?
[19] => @
[20] => A
[21] => B
[22] => C
[23] => D
[24] => E
[25] => F
[26] => G
[27] => H
[28] => I
[29] => J
[30] => K
[31] => L
[32] => M
[33] => N
[34] => O
[35] => P
[36] => Q
[37] => R
[38] => S
[39] => T
)
为什么T
而不是"T"
?PHP 有一个错误特性,它使未定义的常量评估为与常量名称具有相同内容的字符串。该常量T
未定义,因此它与"T"
为代码高尔夫目的保存两个字符相同。以后也一样q
。如果服务器有错误报告,它将显示关于未定义常量的警告。
split(q,"I justCannaLE?2Gotta >u=Msta=.q...");
这会将字符串拆分为字符处的数组q
。同样,这使得代码比使用数组文字更短。结果:
Array
(
[0] =>
I justCannaLE?2Gotta >u=Msta=.
[1] =>
Ng1Nlet? downNrun<rH=5desMt?N>cryNsayRoodbyeNtE< lie5hurt?
[2] =>
We'T3n each@Jor s8lSg6r hear9<ch: but6;Lo7hyL7BInsideCe both3Cha9Ro: S
We3KeRa45we;QplB
[3] => 1)O)NgiT, nPgiT
(G
[4] => iT? up
[5] => howFJeel:
[6] => know
[7] => me
[8] => <=
[9] =>
YH
[10] => 8s
[11] => o
[12] => t's been
[13] => ing
[14] => 're
[15] => a
[16] => nd
[17] => make?
[18] => yH
[19] => othM
[20] => A
[21] => ay it
[22] => w
[23] => D
[24] => ell
[25] => I'm
[26] => G
[27] => ou
[28] => I
[29] => f
[30] => Lh
[31] => t
[32] => er
[33] =>
NP
[34] =>
(Ooh
[35] => eTrQ
[36] => RSna
[37] => g
[38] => on
[39] => ve
)
最后一个参数是目标字符串。
"We; n7trangMsL8loT63Ke rules5s8d8I
AJull commit4nt'sChatFKink: of6CHldn'tRetKisJrom<ny@Ruy-/A= if?<sk 42DS'tLE 4?;Lo8bli=L7ee..
O,R1)O,R001)/-.."
如果您将数组str_replace()
作为 needle 和 haystack 传递,则一次替换一个。为简单起见,让我们将"We; n7trangMs"
其作为 taget 字符串并开始替换 from ;
。"7"
替换为后的第一步"8s"
(第二个数组中对应的替换):
"We; n8strangMs"
然后替换"8"
为"o "
"We; no strangMs"
";"
和"'re"
"We're no strangMs"
"M"
和"er"
"We're no strangers"
简而言之,它是一种基本的压缩算法,您可以在其中找到在原始文本中重复的字符序列并将它们替换为单个字符。解压缩时,该字符将替换为原始序列。通过迭代运行进度,您可以再次压缩曾经压缩过的文本 ( "o s"
=> "8s"
=> "7"
)。