我有一个字符串。使用PHP(以及最简单的解决方案,可能是preg_replace)我想:
从字符串中查找最后5个字符(不是单词)。
如果最后5个字符中的一个包含'&'性格,我想删除这个&字符和可能跟随的任何其他字符。
例如,当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';
等。脚本应删除&之后的所有字符(包括&)。
答案 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;
}
}