使用php删除第三点(.)之后的值



使用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);

演示片段

最新更新