Php 从字符串中提取数字
我想从字符串中提取一个数字。字符串看起来像这样:Php 从字符串中提取数字,php,regex,Php,Regex,我想从字符串中提取一个数字。字符串看起来像这样: "visaObs(31124228);" 这是我的机会。它似乎没有得到任何匹配: preg_match('/visaObs((\d+));/s', $attribute, $match); echo $match[0]; //undefined offset 有什么想法吗?在正则表达式中,括号是一个特殊字符。你应该在数字周围用括号转义 preg_match('/visaObs\((\d+)\);/s', $attribute, $match)
"visaObs(31124228);"
这是我的机会。它似乎没有得到任何匹配:
preg_match('/visaObs((\d+));/s', $attribute, $match);
echo $match[0]; //undefined offset
有什么想法吗?在正则表达式中,括号是一个特殊字符。你应该在数字周围用括号转义
preg_match('/visaObs\((\d+)\);/s', $attribute, $match);
在正则表达式中,括号是一个特殊字符。你应该在数字周围用括号转义
preg_match('/visaObs\((\d+)\);/s', $attribute, $match);
必须转义文字括号:
/visaObs\((\d+)\);/
不需要s修饰符,因为它是第一个捕获组,所以您的结果在
$match[1]
中。您必须转义文字括号:
/visaObs\((\d+)\);/
不需要s修饰符,您的结果是$match[1]
,因为它是第一个捕获组。您必须转义(
和)
:
例如:
$ cat /tmp/1.php
<?
$attribute = "visaObs(31124228);";
preg_match('/visaObs[(](\d+)[)];/s', $attribute, $match);
print $match[1];
?>
$ php /tmp/1.php
31124228
$cat/tmp/1.php
$php/tmp/1.php
31124228
如果提供了匹配项
,则它将填充搜索结果$matches[0]
将包含与完整模式匹配的文本,$matches[1]
将包含与第一个捕获的括号子模式匹配的文本,依此类推 您必须转义(
和)
:
例如:
$ cat /tmp/1.php
<?
$attribute = "visaObs(31124228);";
preg_match('/visaObs[(](\d+)[)];/s', $attribute, $match);
print $match[1];
?>
$ php /tmp/1.php
31124228
$cat/tmp/1.php
$php/tmp/1.php
31124228
如果提供了匹配项
,则它将填充搜索结果$matches[0]
将包含与完整模式匹配的文本,$matches[1]
将包含与第一个捕获的括号子模式匹配的文本,依此类推 您只能通过匹配任意数量的数字来查找数字,并包括数字周围的内容:
preg_match('/(?<=visaObs\()\d+(?=\))/', $attribute, $match);
var_dump($match);
preg_match('/(?通过匹配任意数量的数字,只能找到数字,并包括数字周围的内容:
preg_match('/(?<=visaObs\()\d+(?=\))/', $attribute, $match);
var_dump($match);
preg\u match('/(?谢谢。你能告诉我如何使用结果吗?$match[0]
或$match[1]
似乎没有定义。@Johan:$match[1]
。请看我的答案;我已经更新了。Sweet.$match[1]
如果字符串不匹配,则为空?@Johan:是的。如果的话,您也可以用检查preg\u match的结果。谢谢。您能告诉我如何使用结果吗?$match[0]
或$match[1]
似乎没有定义。@Johan:$match[1]
。请看我的答案;我已经更新了。Sweet.$match[1]
如果字符串不匹配,则为空?@Johan:是的。如果