PHP - 获取数组中的第一个和最后一个单词

3

我刚开始学习编写PHP代码,有人能帮我指明正确的方向吗?我现在已经掌握了:

$text = Barcelona, Catalunya, Spain

我希望只获取第一个和最后一个单词,它们应该是

输出:巴塞罗那,西班牙

我尝试了这个,但它给了我最后两个单词:

$text = explode(",", $text);
$size = array_slice($text, -2, 2);
$text = implode(",", $size);

输出: 西班牙,加泰罗尼亚

请问有人可以帮忙吗?


2
看一下 array_poparray_shift。它们从给定的数组中返回第一个和最后一个元素。 - Paul
$text[0] 表示第一个元素,end($text) 表示最后一个元素,reset($text) 表示第一个元素。 - Abhik Chakraborty
大家回复得非常迅速,请接受最适合您的答案,但请记得...为了帮助未来的其他人 @ryan - MixedVeg
6个回答

2

请尝试以下方法,希望能对您有所帮助:

$text = "Barcelona, Catalunya, Spain";
$array = explode(",",$text);
$first_word = $array[0];
$last_word  = $array[count($array)-1];

echo $first_word. ', '.$last_word; 

输出:

Barcelona,  Spain

0
<?php
   $array = array(Barcelona, Catalunya, Spain);
   $first = reset($array);
   $last = end($array);

   var_dump($first, $last);
?>

0

$text现在具有值数组,因此

第一个元素:

$text[0]

或者

reset($text)

最后一个元素:

end($text)

0

使用current()表示第一个元素,使用end()表示最后一个元素

$text = "Barcelona, Catalunya, Spain";
$exp = explode(", ", $text);

$string = current($exp) . ", " . end($exp);

演示


0

如果您想获取第一个和最后一个x元素,可以使用array_slice(),但如果您想要间隔,则可以像这样简单地array_combine()两个片段组合起来

function createCenteredGap($gapLength, $text) {
    $length = (strlen($text) - $gapLength) / 2;
    $gapLength = 1;
    return array_merge(
        array_slice($text, 0, $length),
        array_slice($text, $length+$gapLength, $length)
    );
}

当以createCenteredGap(1, $text)的形式调用时,这将起到一定作用,如您可以在this demo中看到。


@ryan 也适用于更大的列表和间隙,但我建议在函数之前检查 explode 是否按预期工作。 - kero

0
尝试使用这个非常简单的正则表达式。
preg_match('/^(.[^,]*)\s*,.*,\s*(.*)$/', $text, $match);
$first = $match[1];
$last = $match[2];

如果您确定元素只是没有数字和其他符号的单词,那么您可以修改这个正则表达式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接