0

我有一个字符串。使用 PHP(以及最简单的解决方案,可能是 preg_replace)我想:

  1. 从字符串中查找最后 5 个字符(不是单词)。

  2. 如果最后 5 个字符中的一个包含“&”字符,我想删除这个 & 字符以及后面可能出现的任何其他字符。

例如,当字符串是:

$string='Hello world this day and tomorrow';

脚本应该找到:

' orrow';

(并且什么都不做,因为“orrow”不包含“&”)。

但当:

$string='Hello world this day and tomor &row';或者

$string='Hello world this day and tomo &rrow';或者

$string='Hello world this day and tomorrow &';或者

$string='Hello world this day and tomorrow&q';或者

$string='Hello world this day and tomorrow &co';

等脚本应删除 & 之后的所有字符(包括 &)。

4

3 回答 3

2

正则表达式:&.{0,4}$应该可以解决问题。它将找到结尾之前的最后 0-4 个字符,这些字符位于(并包括)一个 & 字符之后

$string = 'Hello World&foo';
echo $string;
$string = preg_replace('/&.{0,4}$/', '', $string);
echo $string;
于 2013-09-17T22:49:07.910 回答
1

如果你想避免正则表达式,strpos可能会做的伎俩:

$string='Hello world this day and tom&or&row';
if (($pos = strpos ($string, '&', strlen($string) - 5)) !== false)
{
    $string = substr($string,0, $pos);
}

爱迪生的例子。

于 2013-09-17T22:57:50.270 回答
0

这应该工作:

for($i=max(0, strlen($string)-5);$i<strlen($string);$i++) {
    if($string[$i] == '&') {
        $string = substr($string,0,$i);
        break;
    }
}
于 2013-09-17T22:43:41.323 回答