获取PHP变量的一部分

获取PHP变量的一部分,php,Php,我只需要得到PHP变量的一部分 $somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm"; 现在,我无法理解,但我只需要第一部分,去掉最后一部分,然后将变量再次保存为$somevar 我只需要捕获sd300.somdata.cd.vm 我试过preg\u replace,但就是想不出来 有人有想法吗?您可以尝试这样做: $somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm"; $delimi

我只需要得到PHP变量的一部分

$somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm";
现在,我无法理解,但我只需要第一部分,去掉最后一部分,然后将变量再次保存为
$somevar

我只需要捕获
sd300.somdata.cd.vm

我试过
preg\u replace
,但就是想不出来


有人有想法吗?

您可以尝试这样做:

$somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm";

$delimiter = '.cd.vm';

$temp = explode($delimiter, $somevar);
您的搜索值:

$value = $temp[0] . $delimiter;

您没有提供太多信息,这就是我猜测的原因。

下面的逻辑将很有帮助

$somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm";
echo (implode('.',current(array_chunk(explode('.',$somevar),4))));
使用
preg\u match\u all()
可以执行以下操作:

$somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm";
$pattern = '/((.*?\.)(cd\.vm))/';
preg_match_all($pattern, $somevar, $matches);
print_r($matches);
返回

Array
(
    [0] => Array
        (
            [0] => sd300.somedata.cd.vm
            [1] => .someotherdata.cd.vm
        )

    [1] => Array
        (
            [0] => sd300.somedata.cd.vm
            [1] => .someotherdata.cd.vm
        )

    [2] => Array
        (
            [0] => sd300.somedata.
            [1] => .someotherdata.
        )

    [3] => Array
        (
            [0] => cd.vm
            [1] => cd.vm
        )

)

$matches[0][0]
包含问题中的。

如果仍要使用preg\u replace:

$somevar = "sd300.somedata.cd.vm.someotherdata.cd.vm";
$somevar = preg_replace("/(.*\..*\..*\..*)\..*\..*\..*/", '$1', $somevar);
var_dump($somevar);

您如何确定应退还的部分?它总是最中间的点吗?请张贴你的代码。