使用PHP

时间:2018-02-06 07:21:12

标签: php

使用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;
    }
?>

3 个答案:

答案 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);

demo snippet