PHP preg_split 两个斜杠
PHP preg_split both slashes
我有这样一个字符串:"C:\Users\Jamie/Desktop/Test.TXT"
我想使用 preg_split
将字符串拆分成这样的数组,使用此代码:
$arr = preg_split("/(\|\/)/", "C:\Users\Jamie/Desktop/Test.TXT");
我期望的是:
array(0=>"C:",1=>"Users",2=>"Jamie",3=>"Desktop",4=>"Test.TXT")
但是我得到的是
array(0=>"C:\Users\Jamie/Desktop/Test.TXT")
如何使用 preg_split
获得预期结果?
简单:
$parts = preg_split('~[\\/]~', $filename);
~
只是分隔符。正则表达式几乎可以使用任何定界符。因此,您可以 ~...~
.
而不是 /.../
使用反斜杠时,您必须对它们进行两次转义,例如 \\
。对于正则表达式引擎,它们将以 \
的形式出现。换句话说,\
中的两个反斜杠都需要转义,因此 \\
.
如果您愿意,也可以使用以下内容。
$parts = preg_split('/[\\\/]/', $filename);
编辑。这有点令人困惑。也许这会以另一种方式解释它:
- 在 PHP 中
\\
被视为两个转义反斜杠,即 \
.
- 对于 Regex 引擎
\
被视为一个转义的反斜杠,即 \
.
我会将一种斜杠(反斜杠 \
f.e.)替换为另一种斜杠 (/
),使用 str_replace()
then use explode()
拆分字符串:
$pieces = explode('/', str_replace('\', '/', "C:\Users\Jamie/Desktop/Test.TXT"));
print_r($pieces);
它输出:
Array
(
[0] => C:
[1] => Users
[2] => Jamie
[3] => Desktop
[4] => Test.TXT
)
当然,此解决方案不会提高您对 regex
的了解,但速度很快,并且代码的意图对于 reader.
更清晰
我有这样一个字符串:"C:\Users\Jamie/Desktop/Test.TXT"
我想使用 preg_split
将字符串拆分成这样的数组,使用此代码:
$arr = preg_split("/(\|\/)/", "C:\Users\Jamie/Desktop/Test.TXT");
我期望的是:
array(0=>"C:",1=>"Users",2=>"Jamie",3=>"Desktop",4=>"Test.TXT")
但是我得到的是
array(0=>"C:\Users\Jamie/Desktop/Test.TXT")
如何使用 preg_split
获得预期结果?
简单:
$parts = preg_split('~[\\/]~', $filename);
~
只是分隔符。正则表达式几乎可以使用任何定界符。因此,您可以 ~...~
.
/.../
使用反斜杠时,您必须对它们进行两次转义,例如 \\
。对于正则表达式引擎,它们将以 \
的形式出现。换句话说,\
中的两个反斜杠都需要转义,因此 \\
.
如果您愿意,也可以使用以下内容。
$parts = preg_split('/[\\\/]/', $filename);
编辑。这有点令人困惑。也许这会以另一种方式解释它:
- 在 PHP 中
\\
被视为两个转义反斜杠,即\
. - 对于 Regex 引擎
\
被视为一个转义的反斜杠,即\
.
我会将一种斜杠(反斜杠 \
f.e.)替换为另一种斜杠 (/
),使用 str_replace()
then use explode()
拆分字符串:
$pieces = explode('/', str_replace('\', '/', "C:\Users\Jamie/Desktop/Test.TXT"));
print_r($pieces);
它输出:
Array
(
[0] => C:
[1] => Users
[2] => Jamie
[3] => Desktop
[4] => Test.TXT
)
当然,此解决方案不会提高您对 regex
的了解,但速度很快,并且代码的意图对于 reader.