我有這些字符串:字符串的最後一個字符應該是一個字母或數字
$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