$beforeDot = explode(".", $string)[0];
这是我试图做的,除了它返回语法错误。如果有一个班轮的解决方法,请告诉我。如果无法做到这一点,请解释。
答案 0 :(得分:8)
您可以使用list:
list($first) = explode(".", "foo.bar");
echo $first; // foo
如果您需要第二个(或第三个等)元素,这也适用:
list($_, $second) = explode(".", "foo.bar");
echo $second; // bar
但那可能会变得非常笨拙。
答案 1 :(得分:8)
function array dereferencing是在PHP 5.4中实现的,所以如果您使用的是旧版本,则必须采用另一种方式。
这是一个简单的方法:
$beforeDot = array_shift(explode('.', $string));
答案 2 :(得分:2)
为此目的使用array_shift()
:
$beforeDot = array_shift(explode(".", $string));
答案 3 :(得分:2)
使用current(),在爆炸后获得第一个位置:
$beforeDot = current(explode(".", $string));
答案 4 :(得分:1)
在php< = 5.3中你需要使用
$beforeDot = explode(".", $string);
$beforeDot = $beforeDot[0];
答案 5 :(得分:0)
2020年:Google带来了类似的服务。
将“ explode”与“ implode”配对以填充变量。
爆炸->在分隔符处将字符串分成数组
内爆->将第一个数组元素中的字符串转换为变量
$str = "ABC.66778899";
$first = implode(explode('.', $str, -1));
将为您提供“ ABC”作为字符串。 根据您的字符串特征,调整limit参数使其爆炸。
答案 6 :(得分:0)
对于读到这里的其他人,我一直使用错误抑制运算符 (@
) 来在使用 error_reporting E_STRICT
运行时停止 PHP 的错误 - 它一直是我解决同样问题的方法,但要在一行中获取数组中的最后 项:
#> php -v | head -1 | awk '{ print $2 }'
8.0.0
#> php -a
Interactive mode enabled
php > ini_set('error_reporting', E_ALL);
php > var_dump(end(explode('/', 'foo/bar/last-segment')));
Notice: Only variables should be passed by reference in php shell code on line 1
string(12) "last-segment"
为什么 PHP 会发出错误,但仍然返回我想要的东西?所以:
php > var_dump(@end(explode('/', 'foo/bar/last-segment')));
string(12) "last-segment"