preg_replace - $1 返回捕获组以及其余部分

Bla*_*ack 1 php regex preg-replace

怎样才能用preg_replace95040只保留第一个字符?

这是我的尝试,应该像我的在线正则表达式所示那样工作

在此输入图像描述

但我拿回了原来的字符串。

$re = '/(^\d{1})/m';
$str = '9100';

$str = preg_replace($re, '$1', $str);
echo $str;  //returns 9100
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

在线Php


更新

我注意到以下代码返回9-->100而不是9

$re = '/(^\d)/';
$str = '9100';

$str = preg_replace($re, '$1-->', $str);
echo $str; //returns 9-->100
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及如何预防?

在线Php

Ana*_*Die 5

简单地做:-

$str = $str[0];
Run Code Online (Sandbox Code Playgroud)

输出:- https://eval.in/991817

如果你愿意preg_replace()的话:-

<?php

$re = '/(^\d).*/s';
$str = '9100';

$str = preg_replace($re, '$1', $str);
echo $str;
Run Code Online (Sandbox Code Playgroud)

输出:- https://eval.in/991829