php 获取字符串中的最后N个单词

tcbh2hod  于 2023-01-24  发布在  PHP
关注(0)|答案(5)|浏览(133)

我正在尝试获取字符串中的最后几个单词。对于最后一个单词,我使用以下代码:

$string = "Hallo dies ist ein extrem langer Text den ich gern gekuerz haette, leider bin ich selbst zu doof dafür und mach hier einen test.";

$pattern = '/[^ ]*$/';

preg_match($pattern, $string, $result);

echo "<br>The last word is:------ ". $result[0] ." ---------<br>";

它工作得很好,但我需要灵活性来获得,比如说,最后3个字。
我不知道如何改变这种模式。

krugob8w

krugob8w1#

这就行了

$pattern = '/(([^ ]*)\s+([^ ]*)\s+([^ ]*))$/';
    • 一个

$pattern = '/((([^ ]*)[\s.]+){3})$/';
    • 第一个e第一个f第一个x
gojuced7

gojuced72#

最好在字符串上使用explode,如下所示:

$string = 'Hello, my name is Jordan Doyle';
$string_array = explode(' ', $string);
echo end($string_array);

输出示例:

root@upstairslinux:~# php example.php
Doyle

root@upstairslinux:~#

这里有一个函数来获取指定数量的行...

<?php
function get_last_words($amount, $string)
{
    $string_array = explode(' ', $string);

    return array_slice($string_array, count($string_array) - $amount);
}

$string = 'Hello, my name is Jordan Doyle';
var_dump(get_last_words(3, $string));

输出示例:

root@upstairslinux:~# php example.php
array(3) {
  [0]=>
  string(2) "is"
  [1]=>
  string(6) "Jordan"
  [2]=>
  string(5) "Doyle"
}

root@upstairslinux:~#
ao218c7q

ao218c7q3#

    • 编辑**
$patterns = '/\b[a-zA-Z]*\b/';

并使用preg_match_all匹配所有匹配项

preg_match_all($patterns, $string, $result);

  $string = "Hallo dies ist ein extrem langer Text den ich gern gekuerz haette, leider bin ich selbst zu doof daf&uuml;r und mach hier einen test.";

 preg_match_all($patterns, $string, $result);

 foreach($result[0] as $value){
  echo "$value ";
 } 


for($length = count($result[0]), $i = 1; $i < 4; $i++){
       $offset = $length - $i;
       echo $result[0][$offset];
     }

上面的代码片段提取了最后3个单词

pnwntuvh

pnwntuvh4#

最好在字符串上使用爆炸,如下所示:

<?php 
$cate = 'category-node-25';
$cateId = explode('-', $cate);
echo end($cateId);
?>

产量--〉25。

vq8itlhq

vq8itlhq5#

使用preg_match查找由标准单词边界(而不仅仅是空格)定义的单词。

if (preg_match('/\w+\s*$/', $string, $matches)) {
    $last_word = $matches[0];
    echo $last_word;
} else {
    echo "No match found";
}

相关问题