字符串的最后一个字符应该是字母或数字


Last character of a string should be a letter or a number

我有以下字符串:

$string = 'Tester,';

最后我想得到:

"测试人员"

我试过了:

$string = rtrim($string, array(',', '.'));

但rtrim()的第二个参数不能是数组。

如何从字符串末尾删除除字母或数字以外的所有内容?

谢谢。

这应该适用于您:

(在这里,我只检查字符串的最后一个字符是否不是ctype_alnum()的字母数字。如果为true,我将最后一个字符串设置为空,否则我将其保留)

<?php
    $string = "Tester,";
    $string[strlen($string)-1] = (!ctype_alnum($string[strlen($string)-1])?"":$string[strlen($string)-1]);
    echo $string;
?>

输出:

Tester

您可以使用preg_match()从字符串末尾删除任何非字母数字字符,如下所示:

preg_match('/(.+[a-zA-Z0-9])/',$string,$matches);
$string = $matches[0];

另一个解决方案是正则表达式。

这解决了您的任务:preg_replace('/(.*)[^a-zA-Z0-9]$/', '$1', 'Tester,');

Regex正在运行:

在线正则表达式测试程序和调试器

Codeshare.io-PHP示例

描述

用于此任务的正则表达式查找以任何字符^(.*)开头、不以(字母)数字字符[^a-zA-Z0-9]$结尾的字符串。preg_replace用所谓的backreference的值替换匹配。反向引用是对组的值的引用。一个群体是介于弯曲括号之间的一切。

链接

Regex参考