Php 删除除最后一个带破折号的变量外的所有字符和数字
嗨,我想在php中使用preg_replace删除一个字符,所以我这里有一段代码,我想删除整个字符、字母和数字,除了最后一个数字,它后面有破折号(-)符号和数字,所以这是我的代码Php 删除除最后一个带破折号的变量外的所有字符和数字,php,preg-replace,Php,Preg Replace,嗨,我想在php中使用preg_replace删除一个字符,所以我这里有一段代码,我想删除整个字符、字母和数字,除了最后一个数字,它后面有破折号(-)符号和数字,所以这是我的代码 echo preg_替换('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10') 我希望结果会很好 -10 上面的问题不是很好。我用它检查了这个模式,它看起来很有效,但在另一边根本不起作用。我不知道为什么,但有谁能帮我弄明白吗 非常感谢在这种情况下,我的第一个想法是使用explode。。让它
echo preg_替换('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10')代码>
我希望结果会很好
-10
上面的问题不是很好。我用它检查了这个模式,它看起来很有效,但在另一边根本不起作用。我不知道为什么,但有谁能帮我弄明白吗
非常感谢在这种情况下,我的第一个想法是使用explode。。让它像下面的代码一样简单
$string = 'asdf1245-10';
$array = explode('-', $string);
end($array);
$key = key($array);
$result = '-' . $array[$key];
$result=>“-10” 这里有一条路要走:
echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf1245-10');
输出:
-10
<nothing>
及
输出:
-10
<nothing>
另一种方式:
$result = preg_match('~\A.*\K-\d+\z~', $str, $m) ? $m[0] : '';
图案详情:
\A # start of the string anchor
.* # zero or more characters
\K # discard all on the left from match result
-\d+ # the dash and the digits
\z # end of the string anchor
@user1256346:$1
代表第1组的内容,这是第一对括号内的内容。@toto我想对你的答案投赞成票,但我发现它更像一个陈述:-x