我正在尝试编写一个函数来修剪字符串末尾的所有字母,直到它命中的第一个数字。
基本上我有儿童产品,item101S,item101xxx等,并且只想输出父产品item101。
不确定我是否应该使用正则表达式或!is_numeric或什么。
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:1)
php > $s="item101xxx";
php > $pattern="/[^\d]*\d+/";
php > echo preg_match($pattern, $s, $m);
1
php > print_r($m);
Array
(
[0] => item101
)
答案 1 :(得分:1)
以下将删除字符串末尾的所有字母(a-z和A-Z)
$temp = 'item404Ssss';
echo preg_replace('/[a-zA-Z]+$/', '', $temp);
输出是:
item404
答案 2 :(得分:0)
这对你有什么用?
$string = 'item101S';
$string = preg_replace('/(.+?)[a-z]+$/i','$1',$string);
答案 3 :(得分:0)
仅使用sscanf()
进行演示$data = array('item101S', 'item101xxx');
foreach($data as $datum) {
list($parent,$number,$child) = sscanf($datum,'%[A-Za-z]%d%s');
$parent = $parent.$number;
echo $parent,' -> ',$child,PHP_EOL;
}
答案 4 :(得分:0)
function rtrim_letters( $input )
{
$output = preg_replace('/[a-z]+$/i', '', $input );
return $output;
}
答案 5 :(得分:0)
此函数将删除除字符串中最后一位数字后的数字以外的任何内容。如果字符串中没有数字,它将保持不变。
function strtrim( $str ) {
return preg_replace('/(.+?\d)[^\d]*$/i', '$1', $str);
}
echo strtrim("item101S"); // item101
echo strtrim("paosdkpasd"); // paosdkpasd
echo strtrim("23121asd"); // 23121
echo strtrim("1321345+"); // 1321345