我有一个 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);
应该这样做。虽然没有示例字符串,但我无法对此进行测试。
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消