PHP:从字符串中提取数字的最佳方法

标签 php string preg-match

<分区>

Possible Duplicate:
a simple function for return number from string in php

从字符串中提取一组特定数字的最佳/最有效方法是什么?例如:我想在 sring“blah blah Case#004522 blah blah”中的 Case# 之后立即获取一组数字。我想 Case# 之后的数字字符数将始终相同,但我希望代码不要像我以前那样做出这样的假设。

到目前为止,我一直在使用 strpos 方法定位 Case#,然后使用 substr 提取特定数量的字符后缀。我只是觉得这很笨拙。也许 preg_match 会更有效或更简化?

$text = "blah blah Case#004552 blah blah";
$find = strpos($text,'Case#');
if ( $find )
  $numbers = substr($text, $find+5, 6);

最佳答案

您可以使用正则表达式首先匹配您的字符模式 (Case#),然后您希望只匹配数字(数字),即 \d 在 PCRE(Demo)中:

$numbers = preg_match("/Case#(\d+)/", $text, $matches)
              ? (int)$matches[1]
              : NULL
    ;
unset($matches);

一次进行多个(整数)匹配:

$numbers = preg_match_all("/Case#(\d+)/", $text, $matches)
              ? array_map('intval', $matches[1])
              : NULL
    ;
unset($matches);

关于PHP:从字符串中提取数字的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581199/

相关文章:

php - preg_match url 模式

php - 如何对冒号和句点之间的文本使用 PHP preg_match?

php - Socialengine 4 - 使用 PHP 设置模块标题

php - x64 PHP/MYSQL 构建是否支持 64 位 Windows 服务器上的完整 64 位时间戳

php - HTML2PDF 表格内容溢出页面

MySQL字符串选择命令

php - 基数违规 : 1222 The used SELECT statements have a different number of columns

c - 滚动文本程序

c# - StringComparison 枚举的选项

php - 正则表达式匹配模式