我有这个字符串:$delims = ',^.;:\t'
(在preg_replace()
电话中使用)
我需要两个数组..一个用这些分隔符作为索引($delimCount
),另一个用这些分隔符作为值($delimiters
)。
前者将从后者的循环中获取值...如下:
foreach ($delimiters as $delim) {
if( strpos($char, $delim) !== false) { // if the char is the delim ...
$delimCount[$delim]++; // ... increment
}
}
我现在拥有它的方式很麻烦,我想简单地将那个字符串分成两个数组...但是我在\t
分隔符上被绊倒了(因为它是唯一的一个有两个字符)
我该怎样/应该怎么处理?
答案 0 :(得分:1)
我将如何处理您的\t
分隔符
$delims = ',^.;:\t';
$i = 0;
while($i < strlen($delims)) {
if($delims[$i] == chr(92)) {
$delimiters[] = $delims[$i] . $delims[$i+1];
$i = $i + 2;
}
else {
$delimiters[] = $delims[$i];
$i++;
}
}
$ delimiters的输出
Array
(
[0] => ,
[1] => ^
[2] => .
[3] => ;
[4] => :
[5] => \t
)
至于以分隔符作为索引的数组
foreach($delimiters as $key=>$val) {
$delimCount[$val] = $val;
}
$ delimCount的输出
Array
(
[,] => ,
[^] => ^
[.] => .
[;] => ;
[:] => :
[\t] => \t
)
希望这有帮助。
答案 1 :(得分:0)
我需要两个数组..一个用这些分隔符作为索引($ delimCount),另一个用这些分隔符作为值($ delimiters)。
嗯,$ delimiters来自哪里?你自己写的吗?如果是这样,我认为你最好不要在任何情况下使$ delimiters成为一个数组,并在preg_replace中使用implode。
答案 2 :(得分:0)