PHP preg_split Apache& Powershell等效

时间:2012-09-18 15:26:03

标签: php windows linux apache powershell

我的建筑:

该脚本使用GIT-POSH归档工作目录,并使用Windows Powershell SSH模块将其发送到Linux Apache服务器。

为方便起见,该脚本还需要报告本地计算机和Apache服务器上的现有文件。


问题:

这是我需要字符串操作来分隔命名约定中的每个块的地方。

我打算使用下划线block_block,直到我意识到某些块已经包含下划线。 这时我决定用括号[block][block]

封装每个块
  

在PHP中,我会使用preg_split将每个部分拉成一个关联数组。

[product][branch_name][date][time][commit_hash]


预期用法:

--> Get-Product $string
--> product123
--> Get-Branch $string
--> branch123


我的问题:

  • 如何使用powershell和apache preg_split这个字符串的方式相同?
  • 支持相同操作的更好的命名约定?

1 个答案:

答案 0 :(得分:1)

PHP的preg_split可以与System.RegularExpressions.Split()一起模仿。有一些警告,即Split()将为其替换的标记返回空字符串,因此需要进行一些过滤。像这样,

$data = "[product][branch_name][date][time][commit_hash]"
$arr = [Regex]::Split($data, "[\[\]]") | ? { $_.length -gt 0 }
$arr

输出:

product
branch_name
date
time
commit_hash

如果没有过滤子句? { $_.length -gt 0 } - 它将排除长度为零的字符串对象 - 输出会略有不同:

product

branch_name

date

time

commit_hash

MSDN中的此行为is documented