Php 如何从字符串中提取最后4个单词?

Php 如何从字符串中提取最后4个单词?,php,Php,我想从字符串中提取最后4个单词作为单个块 例如,如果我有: "Are You Looking For The Best Website Review" 我想把最后四个字概括为: "The Best Website Review" 我只有基本的编码知识,并尝试了在这个论坛中我能找到的每一种变体 我最接近的方法是使用()的建议,但这给了我作为单独值的单词 $split = explode(" ", $str); echo $split[count($split)-4]; echo $split

我想从字符串中提取最后4个单词作为单个块

例如,如果我有:

"Are You Looking For The Best Website Review"
我想把最后四个字概括为:

"The Best Website Review"
我只有基本的编码知识,并尝试了在这个论坛中我能找到的每一种变体

我最接近的方法是使用()的建议,但这给了我作为单独值的单词

$split = explode(" ", $str);

echo $split[count($split)-4];
echo $split[count($split)-3];
echo $split[count($split)-2];
echo $split[count($split)-1];

我的编码知识有限,如有任何建议,我们将不胜感激。

您可以使用一个简单的正则表达式:

<?php

$subject = "Are You Looking For The Best Website Review";
$pattern = '/(\w+\s+\w+\s+\w+\s+\w+)\s*$/u';
preg_match($pattern, $subject, $tokens);

var_dump($tokens[0]);
这还有一个优点,即单词之间空白的类型和数量是不相关的,字符串末尾的尾随空白被忽略


编辑:考虑到您对@Uchiha发布的答案的评论,这是该模式的一个变体,显示了如何轻松匹配除空格外由其他字符分隔的单词:

$pattern = '/(\w+[-\s]+\w+[-\s]+\w+[-\s]+\w+)\s*$/u';

只需使用
str\u word\u count
array\u拼接
就可以了

$str = "Are You Looking For The Best Website Review";
$arr = str_word_count($str,1);
echo implode(' ',array_splice($arr,-4));
$arr = str_word_count(str_replace('-',' ',$str),1);
echo implode(' ',array_splice($arr,-4));
已编辑

如果您的文本包含
您是否正在寻找最佳的网站评论
hiphen
您可以使用
str\u replace

$str = "Are You Looking For The Best Website Review";
$arr = str_word_count($str,1);
echo implode(' ',array_splice($arr,-4));
$arr = str_word_count(str_replace('-',' ',$str),1);
echo implode(' ',array_splice($arr,-4));

使用
join
内爆
粘合您需要的物品。感谢您的快速回复。这很好用。然而,我忘了提到我的一个版本的标题包含宣传,即你在寻找最好的网站评论。有没有可能调整你的代码来处理这些问题?更新了我的答案@CodexUchiha,太完美了。我不能再要求了。再次感谢您分享宝贵的知识。arkascha,也感谢您提供的快速解决方案。我简直不敢相信这个问题解决得有多快。@Codex我添加了一个模式变体,它显示了如何轻松地匹配由空格以外的其他字符分隔的单词。希望这有帮助。坦率地说,我不知道为什么人们更喜欢使用普通字符串方法组合的更复杂、效率更低的方法……Arkascha,再次感谢您花时间为您的代码提供额外的改进。这是一个非常积极的结果,我认为这将需要更长的时间才能实现。如果我们能在这方面提供帮助,那就太好了。如果你的问题已经解决,你应该接受答案。玩得高兴我从一开始就喜欢你的解决方案只有+1