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

时间:2015-04-04 09:48:21

标签: php

我有这些字符串:

$string = 'Tester,';

最后我想得到:

  

'测试仪'

我尝试过这样:

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

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

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

感谢。

3 个答案:

答案 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

Codeshare.io - PHP Sample

<强>描述

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

<强>链接

Regex reference

答案 2 :(得分:1)

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

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