如何使用preg_match获取字符串中的最后一个单词

时间:2013-03-08 16:37:45

标签: php preg-match word

我正试图在字符串中输入最后几个字。 最后一句话,我正在使用它:

$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 个答案:

答案 0 :(得分: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:~#

答案 1 :(得分:1)

那将完成这项工作

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

<强> Example

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

<强> Example

答案 2 :(得分: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个单词

答案 3 :(得分:0)

使用字符串爆炸可能会更好,例如:

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

输出 - &gt; 25。