我有这些字符串:字符串的最后一个字符应该是一个字母或数字
$string = 'Tester,';
最后,我想获得:
“测试”
我像这样试过:
$string = rtrim($string, array(',', '.'));
但rtrim()的第二个参数不能是数组。
如何从字符串的末尾删除所有不是字母或数字的内容?
谢谢。
我有这些字符串:字符串的最后一个字符应该是一个字母或数字
$string = 'Tester,';
最后,我想获得:
“测试”
我像这样试过:
$string = rtrim($string, array(',', '.'));
但rtrim()的第二个参数不能是数组。
如何从字符串的末尾删除所有不是字母或数字的内容?
谢谢。
这应该为你工作:
(在这里我只是检查,如果字符串的最后一个字符不是字母数字wtih ctype_alnum()
如果真我设置的最后一个字符为空,否则我离开它。)
<?php
$string = "Tester,";
$string[strlen($string)-1] = (!ctype_alnum($string[strlen($string)-1])?"":$string[strlen($string)-1]);
echo $string;
?>
输出:
Tester
另一种解决方案是正则表达式。
这可以解决你的任务:preg_replace('/(.*)[^a-zA-Z0-9]$/', '$1', 'Tester,');
正则表达式在行动:
Online regex tester and debugger
说明
常规用于此任务的表达式查找以任何字符^(.*)
开头并且不以(字母)数字字符[^a-zA-Z0-9]$
结尾的字符串。 preg_replace用所谓的反向引用的值替换匹配。反向引用是对组织价值的引用。一组是弧形括号之间的所有内容。
链接
正则表达式应该在学校教:-)不错的一个班轮。 – billynoah 2015-04-04 12:25:50
谢谢:-)是的,那太棒了! – AMartinNo1 2015-04-04 12:29:08
你可以使用preg_match()
从这样的字符串的结尾移除任何非字母数字字符:
preg_match('/(.+[a-zA-Z0-9])/',$string,$matches);
$string = $matches[0];
如果多于最后一个不是(字母)数字的字符必须被删除,这是一个好方法。 – AMartinNo1 2015-04-04 12:20:29
我个人存储的'值strlen($ string)-1',以避免重复函数调用和减法3次。 – SeinopSys 2015-04-04 10:12:05
@ DJDavid98是啊这也是可能的或OP可以使用'substr($ string,-1)' – Rizier123 2015-04-04 10:14:17
这只会删除最后一个字符.. OP要求*所有不是字母或数字*。如果字符串恰好是'tester,@'则会失败。 – billynoah 2015-04-04 11:34:50