可能重复:
a simple function for return number from string in php
从字符串中提取特定数字集的最佳/最有效方法是什么?例如:我希望在Case#in after“blah blah Case#004522 blah blah”之后立即得到一组数字。我想象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);
答案 0 :(得分:6)
您可以使用正则表达式首先匹配您的字符模式(Case#
),然后您希望仅匹配数字(数字),即PCRE中的\d
(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);
答案 1 :(得分:3)
您可以按原样找到它,然后扫描数字(Demo):
$find = strpos($text, 'Case#');
sscanf(substr($text, $find), 'Case#%d', $numbers);
答案 2 :(得分:0)
答案 3 :(得分:0)
最简单的解决方案是
if (preg_match('/Case#\s*(\d+)/i', $test, $m)) {
$numbers = $m[1];
}