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


Get the first and last word on an array

刚开始编写PHP,有人能为我指明正确的方向吗?我有:

$text = Barcelona, Catalunya, Spain

我只想得到应该是的第一个和最后一个单词

输出:西班牙巴塞罗那

我试过了,但它给了我最后两个词:

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

输出:西班牙加泰罗尼亚

有人能帮忙吗?

试试这个,希望它能帮助你:

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

输出:

Barcelona,  Spain

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

$text = "Barcelona, Catalunya, Spain";
$exp = explode(", ", $text);
$string = current($exp) . ", " . end($exp);

DEMO

如果你想获得第一个和最后一个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)一样调用时,这将起到作用,正如您在这个演示

中看到的那样
<?php
   $array = array(Barcelona, Catalunya, Spain);
   $first = reset($array);
   $last = end($array);
   var_dump($first, $last);
?>

尝试使用这个非常简单的regexp

preg_match('/^(.[^,]*)'s*,.*,'s*(.*)$/', $text, $match);
$first = $match[1];
$last = $match[2];

如果您确定元素只是没有数字和其他符号的单词,则可以修改此regexp

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

第一个元素:

$text[0]

reset($text)

最后一个元素:

end($text)