1

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

$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>";

它工作正常。但我不参加与前任一起跑步。最后一棵树的话。我不知道如何改变模式。感谢您提前提供任何帮助。

4

4 回答 4

2

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:~#
于 2013-03-08T16:40:26.783 回答
1

这将完成这项工作

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

例子

或者

$pattern = '/((([^ ]*)[\s.]+){3})$/';

例子

于 2013-03-08T17:14:01.793 回答
0

编辑

   $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 个单词

于 2013-03-08T16:42:32.537 回答
0

在字符串上使用explode可能会更好,如下所示:

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

输出 --> 25。

于 2016-10-21T12:54:25.270 回答