我有以下字符串:
$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参考