PHP如何从字符串中提取06开头手机号并生成WhatsApp跳转链接
实现方案
可以用preg_replace实现需求,更推荐使用preg_match做匹配判断+提取,逻辑更易读维护。
方案1:preg_match实现(推荐)
<?php // 动态变化的原字符串 $string = "This is Harry 0645668901"; // 正则匹配06开头的10位独立手机号,捕获组1取去掉首位0后的8位数字 if (preg_match('/\b06(\d{8})\b/', $string, $matches)) { // 拼接31前缀生成符合要求的号码 $targetPhone = '31' . $matches[1]; // 生成跳转链接 $whatsappLink = '<a href="https://api.whatsapp.com/send?phone=' . $targetPhone . '">Click here</a>'; // 输出链接,无匹配则不执行输出逻辑 echo $whatsappLink; }
方案2:preg_replace实现
<?php $string = "This is Harry 0645668901"; // 正则替换生成链接,无匹配时会返回原字符串 $link = preg_replace('/.*?\b06(\d{8})\b.*/s', '<a href="https://api.whatsapp.com/send?phone=31$1">Click here</a>', $string); // 只有替换成功才输出链接 if ($link !== $string) { echo $link; }
注意事项
- 正则中加入了
\b单词边界标识,避免误匹配到嵌入在长数字中的06开头片段 - 匹配规则默认06开头后固定跟8位数字,符合荷兰手机号通用格式,若场景中号码长度有变化可自行调整正则中的
{8}为对应长度范围,比如{7,9}代表7到9位数字
内容的提问来源于stack exchange,提问作者HermanF
相关产品推荐
相关产品推荐

