使用php删除第三个点之后的字符串值。我想删除该值,但现在我只是使用开关情况来计算IT。但是在某些情况下,如果我在数字之后加入数字,那将无法使用。
<?php
$dnsserver='192.168.5.3';
$dnsserver_length =strlen($dnsserver);
switch ($dnsserver_length) {
case 8:
$a=substr($dnsserver, 0, -1);
for ($i=1; $i < 256; $i++) {
$data1 = array(
'kf_ipaddress_ipaddress' => $a.''.$i,
'kf_ipaddress_status' => $kf_ipaddress_status,
);
$this->Kf_defaultgateway_model->insert_ipaddress($data1);
}
case 9:
$b=substr($dnsserver, 0, -1);
for ($i=1; $i < 256; $i++) {
$data1 = array(
'kf_ipaddress_ipaddress' => $b.''.$i,
'kf_ipaddress_status' => $kf_ipaddress_status,
);
$this->Kf_defaultgateway_model->insert_ipaddress($data1);
}
default:
# code...
break;
}
?>
我通过在http://codepad.org/azlnhzq6
上按照示例来得到答案。<?php
$dnsserver='192.168.5.3';
echo strtok($dnsserver, '.') . '.' . strtok('.').'.' . strtok('.'). '.';
?>
您的尝试使用字符串长度有效(如您所期望的(,在非常具体的情况下,当IP地址前两个部分长3位时,第三部分是一个数字长,等等。。这不是真正的灵活性。
开始学习正则表达式。
对于任何类型的字符串(基于您的问题的标题(:
$s = preg_replace("/^(([^.]+.){3}).*$/", "$1", $dnsserver);
或特定于IP地址:
$s = preg_replace("/^(([0-9]{1,3}.){3}).*$/", "$1", $dnsserver);
// These both will do like:
// 192.168.1.100 -> 192.168.1.
// 1.1.1.100 -> 1.1.1.
// 1.12.123.100 -> 1.12.123.
// etc.
请参阅https://www.regular-expressions.info或其他类似站点的更多信息。
根据您的问题标题,我的建议。
您可以使用此代码:
$dnsserver ='192.168.5.3';
$temp = explode('.', $dnsserver);
unset($temp[count($temp ) - 1]);
echo implode('.', $temp);
演示片段