为了账号安全,请及时绑定邮箱和手机立即绑定

在 preg_replace 中使用子字符串

在 preg_replace 中使用子字符串

PHP
噜噜哒 2021-11-13 19:11:02
我有一个 preg_replace:$text = preg_replace("/(\+?[\d-\(\)\s]{8,25}[0-9]?\d)/", "$1", $text);我想在这个 preg_replace 中使用两个子字符串。它应该是这样的:$text = preg_replace("/(\+?[\d-\(\)\s]{8,25}[0-9]?\d)/", "<span id='number' data-last=substr($1, -5)>substr($1, 0, -5)<span>****<div class='showphone'>Show</div></span></span>", $text);注意那里的两个子串。显然这不是一个有效的例子,但我想知道是否有可能使它起作用。任何想法如何?
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

你不能像变量一样在双引号中使用函数。您也不能对捕获的正则表达式值使用函数,您应该使用preg_replace_callback. 像这样的东西:


$text = preg_replace_callback("/(\+?[\d-\(\)\s]{8,25}[0-9]?\d)/", function($match) {

    return "<span id='number' data-last=" . substr($match[1], -5) . ">" . substr($match[1], 0, -5) . "<span>****<div class='showphone'>Show</div></span></span>";

}, $text);

应该这样做。虽然没有示例字符串,但我无法对此进行测试。


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信