使用PHP删除第三个点(。)后的字符串值。我想删除该值但是现在我只是使用switch case来计算它。但是在某些情况下,如果我在它之后插入一个数字,它就不会起作用。
<?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;
}
?>
答案 0 :(得分:0)
我按照http://codepad.org/AzlNhZq6
上的示例得到了答案<?php
$dnsserver='192.168.5.3';
echo strtok($dnsserver, '.') . '.' . strtok('.').'.' . strtok('.'). '.';
?>
答案 1 :(得分:0)
您尝试使用字符串长度只能在非常特殊的情况下工作,当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或其他类似网站上查看更多内容。
答案 2 :(得分:-1)
根据你的问题标题我的建议。
您可以使用此代码:
$dnsserver ='192.168.5.3';
$temp = explode('.', $dnsserver);
unset($temp[count($temp ) - 1]);
echo implode('.', $temp);