我有这些字符串:
$string = 'Tester,';
最后我想得到:
'测试仪'
我尝试过这样:
$string = rtrim($string, array(',', '.'));
但是rtrim()的第二个参数不能是数组。
如何从字符串末尾删除所有不是字母或数字的内容?
感谢。
答案 0 :(得分:5)
这应该适合你:
(这里我只是检查字符串的最后一个字符是否为ctype_alnum()
的字母和数字。如果为真,我将最后一个字符设置为空,否则我将其保留为空白。
<?php
$string = "Tester,";
$string[strlen($string)-1] = (!ctype_alnum($string[strlen($string)-1])?"":$string[strlen($string)-1]);
echo $string;
?>
输出:
Tester
答案 1 :(得分:1)
另一种解决方案是正则表达式。
这解决了您的任务:preg_replace('/(.*)[^a-zA-Z0-9]$/', '$1', 'Tester,');
正则表达式:
Online regex tester and debugger
<强>描述强>
用于此任务的正则表达式查找以任何字符^(.*)
开头且不以(字母)数字字符[^a-zA-Z0-9]$
结尾的字符串。 preg_replace将匹配替换为所谓的反向引用的值。反向引用是对组值的引用。一组是弯曲括号之间的所有东西。
<强>链接强>
答案 2 :(得分:1)
您可以使用preg_match()
从字符串末尾删除任何非字母数字字符,如下所示:
preg_match('/(.+[a-zA-Z0-9])/',$string,$matches);
$string = $matches[0];