首页 > 解决方案 > preg_match 检测到特定字符后从字符串中获取特定数字

问题描述

我想在字符串“NPWP”之后剪切数字,然后取所有数字。

有时我有一个这样的字符串:

$valueDetail['DTL02CNA'] = NPWP:016386112436000 JALAN ELANG DESA SUKAHATI CITEUREUP BOGOR 16810, INDONESIA TEL:+62(21)8765105

有时像这样:

$valueDetail['DTL02CNA'] = NPWP 314633389431000 DELTA SILICON INDUSTRIALL PARK 3 JL PINANG F 16/25A, CICAU CIKARANG PUSAT, CITY: BEKASI, JB 17550 INDONESIA

从上面的例子中,我需要这样的结果:

016386112436000
314633389431000

现在,我只知道如何识别它

<?= preg_match("/npwp/i", $valueDetail['DTL02CNA'] ) ?  '<label class="label label-success">NPWP Is Exist</label>' : 'Tidak Ada NPWP' ?> <br>

标签: phpregex

解决方案


从字符串的开头开始匹配^,匹配NPWP后跟一个可选的冒号:?和零个或多个空白字符\s*

然后您可以使用\K重置报告匹配的起点并匹配一位或多位数字\d+

^NPWP:?\s*\K\d+

演示

另一种选择可能是在第一个捕获组中匹配捕获您的值(\d+)

^NPWP:?\s*(\d+)

演示


推荐阅读