Php 三个数组之间的数组合并
我有以下阵列输出:Php 三个数组之间的数组合并,php,arrays,Php,Arrays,我有以下阵列输出: [38] => x._domainkey 14400 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApYA+ELn4SxsERDFgUB9pUnB4PjbcUlSJoLHAlCq1MLVA3NxgLKSAz+lSczyMH97Y/xOpJf1X1LSoGgNh5GVRn0t" [39] => "pm1QOPfKbNH
[38] => x._domainkey 14400 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApYA+ELn4SxsERDFgUB9pUnB4PjbcUlSJoLHAlCq1MLVA3NxgLKSAz+lSczyMH97Y/xOpJf1X1LSoGgNh5GVRn0t"
[39] => "pm1QOPfKbNHx8VMNn4L/KZSPGFyySDUK/UPnF1QoMckoU5a/LgtI8x1ttry5oySDTY9KprVAf92uK6pOFQJA3QlzV2P+R4tx/zho5KlDHmc8YKjL7rLjgQVX7GUBi9cHr0+BQdVFgFL8SwBY8fn/CQ"
[40] => "42JMsEWcMjjEkbAwi9yscGQoTih+kctjr4W8LDF28vyJixozbaFpG8pJ+jGDAho+Zjt/XReOZQP0h51Y8md3/x/F0+gST4mn0mCskNtIQIDAQAB" )
我怎样才能在de-following构造中得到这个
[38] => x._domainkey 14400 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApYA+ELn4SxsERDFgUB9pUnB4PjbcUlSJoLHAlCq1MLVA3NxgLKSAz+lSczyMH97Y/xOpJf1X1LSoGgNh5GVRn0tpm1QOPfKbNHx8VMNn4L/KZSPGFyySDUK/UPnF1QoMckoU5a/LgtI8x1ttry5oySDTY9KprVAf92uK6pOFQJA3QlzV2P+R4tx/zho5KlDHmc8YKjL7rLjgQVX7GUBi9cHr0+BQdVFgFL8SwBY8fn/CQ42JMsEWcMjjEkbAwi9yscGQoTih+kctjr4W8LDF28vyJixozbaFpG8pJ+jGDAho+Zjt/XReOZQP0h51Y8md3/x/F0+gST4mn0mCskNtIQIDAQAB" )
有一条规则
我尽了最大努力,得到了多个数组的输出,但没有一条规则:
Array (
[0] => x._domainkey
[1] => 14400
[3] => TXT
[4] => ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApYA+ELn4SxsERDFgUB9pUnB4PjbcUlSJoLHAlCq1MLVA3NxgLKSAz+lSczyMH97Y/xOpJf1X1LSoGgNh5GVRn0t"
)
Array (
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] => "pm1QOPfKbNHx8VMNn4L/KZSPGFyySDUK/UPnF1QoMckoU5a/LgtI8x1ttry5oySDTY9KprVAf92uK6pOFQJA3QlzV2P+R4tx/zho5KlDHmc8YKjL7rLjgQVX7GUBi9cHr0+BQdVFgFL8SwBY8fn/CQ"
)
Array (
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] => "42JMsEWcMjjEkbAwi9yscGQoTih+kctjr4W8LDF28vyJixozbaFpG8pJ+jGDAho+Zjt/XReOZQP0h51Y8md3/x/F0+gST4mn0mCskNtIQIDAQAB" )
)
我希望两个数组[5]在[4]之后的一个规则上,这可能吗?这不是数组合并,而是字符串连接
$array[38] .= $array[39] . $array[40]; // combine the 3 lines into one
array_splice($array, 39, 2); // remove the continuation lines
每当一行包含
(
在值之前)时,您就需要执行此操作。您必须获取所有行,直到匹配的)
并将它们连接起来。在执行一些清理(删除引号、圆括号等)后,您需要连接元素。在本例中,我从第一个元素中删除了最后一个字符(要删除尾随引号,可以是trim()
或trim()
),并使用trim()
删除接下来两个元素的前导引号和尾随引号
如果这三个元素的位置是动态的,则首先搜索一个可能是您的用例所特有的值(在我的示例中,我使用domainkey
),并使用该键作为连接的基础:
<?php
$records = [
2 => "gibberish",
5 => "garbage",
38 => 'x._domainkey 14400 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApYA+ELn4SxsERDFgUB9pUnB4PjbcUlSJoLHAlCq1MLVA3NxgLKSAz+lSczyMH97Y/xOpJf1X1LSoGgNh5GVRn0t"',
39 => '"pm1QOPfKbNHx8VMNn4L/KZSPGFyySDUK/UPnF1QoMckoU5a/LgtI8x1ttry5oySDTY9KprVAf92uK6pOFQJA3QlzV2P+R4tx/zho5KlDHmc8YKjL7rLjgQVX7GUBi9cHr0+BQdVFgFL8SwBY8fn/CQ"',
40 => '"42JMsEWcMjjEkbAwi9yscGQoTih+kctjr4W8LDF28vyJixozbaFpG8pJ+jGDAho+Zjt/XReOZQP0h51Y8md3/x/F0+gST4mn0mCskNtIQIDAQAB"'
];
foreach ($records as $i => $record) {
if (stripos($record, "domainkey") !== false) {
$initialIndex = $i;
break;
}
}
echo substr($records[$initialIndex], 0, -1).trim($records[$initialIndex + 1], '"').trim($records[$initialIndex + 2], '"')."\")";
这似乎非常具体,你能概括一下吗?在这种情况下,您可以执行以下操作:echo substr($a[38],0,-1).trim($a[39],“”).trim($a[40],“”)。“\”)";代码>问题是行不同,所以当我插入DNS规则时,下一次行可以是42、43和44。那么,我可以先使用数组搜索,然后使用规则吗?您希望使用此脚本实现的最终目标是什么?因为绑定区域文件和TXT记录的格式是有原因的,并且与它们交互是一个非常重要的操作。问题是行不同,所以当我插入DNS规则时,下一次行可以是42、43和44。那么我可以先使用数组搜索,然后使用规则?循环遍历数组。当您看到一个元素中有(
)时,连接下一个元素。继续这样做,直到找到以结尾的元素为止)
。