如何在不使用explode()的情况下从字符串开头删除单词

问题描述 投票:0回答:3

我想从字符串中删除前三个项目,但问题是我不能使用 substr() 因为我不知道每个单词可能包含多少个字符,因为数据来自 UI

即;

$str = A big brown fox jumped over the log;
    $str = A slow red fox jumped over the log;
    $str = An enthusiastic brown fox jumped over the log;

我想删除前三个单词(包括空格),以便新字符串以“fox”开头,然后我计划将此数据存储在新变量中。

我希望有一种比分解它并从数组中删除 0,1 和 2 更简单的方法,所有这些都是我不熟悉的,如果有人知道如何一行,如果您愿意与我分享,我将非常感激我。

php string substring
3个回答
2
投票

假设在空间上进行简单的分割来区分单词

$str = 'A big brown fox jumped over the log';
$rest = preg_split('/ /',$str, 4)[3];

如果您还想调整标点符号,请修改正则表达式

如果您使用的 PHP 版本不支持数组取消引用:

$str = 'A big brown fox jumped over the log';
$split = preg_split('/ /',$str, 4);
$rest = $split[3];

1
投票
echo implode(' ', array_slice(explode(' ', $str), 3));

所有三个字符串的输出均为

fox jumped over the log

演示!


0
投票

仅仅从字符串前面截取前n个单词来生成临时数组是低效且间接的。只需使用

preg_replace()
来匹配并删除 n 个非空白序列,后跟一个空白字符。

代码:(演示

$str = 'A big brown fox jumped over the log';

var_export(
    preg_replace('/^(?:\S+\s){3}/', '', $str)
);
// 'fox jumped over the log'
© www.soinside.com 2019 - 2024. All rights reserved.