preg_replace - $1 returns 捕获组以及其余

preg_replace - $1 returns capture group AND also the rest

如何在 95040 上使用 preg_replace 以便只保留第一个字符?

这是我的尝试,应该像 my online regex 显示的那样工作

但我得到了原来的字符串。

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

$str = preg_replace($re, '', $str);
echo $str;  //returns 9100

我做错了什么?

onlinePhp


更新

我注意到下面的代码 returns 9-->100 而不是 9:

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

$str = preg_replace($re, '-->', $str);
echo $str; //returns 9-->100

为什么会发生这种情况,我该如何预防?

onlinePhp

只需做:-

$str = $str[0];

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

如果你想要preg_replace()无论如何:-

<?php

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

$str = preg_replace($re, '', $str);
echo $str;

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

substr($txt, 0, 1)

这将输出 $txt 字符串第一个字符。