0

我在建造什么:

该脚本使用 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


我的问题:

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

1 回答 1

1

PHPpreg_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 中。

于 2012-09-19T08:25:14.350 回答