在 preg_replace 中使用子字符串

我有一个 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);

注意那里的两个子串。显然这不是一个有效的例子,但我想知道是否有可能使它起作用。任何想法如何?


噜噜哒
浏览 115回答 1
1回答

ibeautiful

你不能像变量一样在双引号中使用函数。您也不能对捕获的正则表达式值使用函数,您应该使用preg_replace_callback. 像这样的东西:$text = preg_replace_callback("/(\+?[\d-\(\)\s]{8,25}[0-9]?\d)/", function($match) {&nbsp; &nbsp; return "<span id='number' data-last=" . substr($match[1], -5) . ">" . substr($match[1], 0, -5) . "<span>****<div class='showphone'>Show</div></span></span>";}, $text);应该这样做。虽然没有示例字符串,但我无法对此进行测试。
打开App,查看更多内容
随时随地看视频慕课网APP