我有下面的字符串,我想从它中提取“33-0408”,显然内容改变了,但是部分号总是跟着字符串“我们的STK”:我怎么才能最优雅地从字符串中提取这些信息?
Microchip Technology Inc.
18 PIN, 7 KB FLASH, 256 RAM, 16 I/O
Mfr's Part #: PIC16F648A-I/SO
Our Stk #: 383-0408
最佳答案
你可以:
<?php
$str = "Microchip Technology Inc.
18 PIN, 7 KB FLASH, 256 RAM, 16 I/O
Mfr's Part #: PIC16F648A-I/SO
Our Stk #: 383-0408";
if (preg_match('/Our Stk #: (\d*-\d*)/', $str, $matches)) {
echo $matches[1];
}
只有当您要查找的数字部分的格式始终为
digits-digits
时,此操作才有效。@richard86给出了一个更一般的解决方案,它包含任意数字和任意数量的破折号,作为您问题的另一个答案。编辑:
如@richard86在评论中所说,为了避免在短划线周围没有数字时出现这种情况,正则表达式应该如下所示:
if (preg_match('/Our Stk #: (\d+-\d+)/', $str, $matches)) {