从字符串中查找最后5个字符并将其删除(如果它们包含&符号)

时间:2013-09-17 22:37:26

标签: php regex string

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

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

  2. 如果最后5个字符中的一个包含'&'性格,我想删除这个&字符和可能跟随的任何其他字符。

  3. 例如,当string为:

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

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

3 个答案:

答案 0 :(得分:2)

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

$string = 'Hello World&foo';
echo $string;
$string = preg_replace('/&.{0,4}$/', '', $string);
echo $string;

答案 1 :(得分:1)

如果你想避免使用正则表达式,strpos可能会做到这一点:

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

Ideone示例。

答案 2 :(得分:0)

这应该有效:

for($i=max(0, strlen($string)-5);$i<strlen($string);$i++) {
    if($string[$i] == '&') {
        $string = substr($string,0,$i);
        break;
    }
}