Php preg_match_all()从字符串中获取一个数字

Php preg_match_all()从字符串中获取一个数字,php,foreach,numbers,preg-match-all,Php,Foreach,Numbers,Preg Match All,preg_match_all()如何工作 我想从字符串中获取一个数字: 我有一个结果: (62) 我只想要号码。并且想要对几个字符串执行此操作。 这就是我所做的尝试: foreach($html2->find('small[class=menu-item__label__count]') as $aholder) { $holderdes=$aholder->outertext; preg_match_all('/([0-9]+)/', $holderdes,$num); e

preg_match_all()如何工作

我想从字符串中获取一个数字:

我有一个结果:

(62)

我只想要号码。并且想要对几个字符串执行此操作。 这就是我所做的尝试:

foreach($html2->find('small[class=menu-item__label__count]') as $aholder) {

$holderdes=$aholder->outertext;

preg_match_all('/([0-9]+)/',  $holderdes,$num);

echo $num.'<br>'; 
foreach($html2->find('small[class=menu-item\uuuuu label\uuuu count]”)作为$aholder){
$holderdes=$aholder->outertext;
preg_match_all(“/([0-9]+)/”,$holderdes,$num);
回显$num.“
”;

返回的是“数组…”

您应该打印
$num[0];

foreach($num[0] as $pattern)
   // do something with $pattern
此外,您的正则表达式看起来也是错误的。如果要匹配
(61)
,则需要执行以下操作(包括括号):


如果您的字符串类似于
“(62)”

然后你可以使用这个:

<?php
    $str = '(62)';
    preg_match_all('!\d+!', $str, $matches);
    print_r($matches);
?>
另外,如果您尝试回显数组(
$num
),则不会出现任何
错误
打开错误报告以进行调试

error_reporting(E_ALL);
ini_set("display_errors", 1);

preg_match返回一个数组,从中可以看到

如果要查看数组的所有内容,请使用

var_dump( $sum );
如果您只需要匹配的,您必须解决该特定部分

查看regex快速参考

  • [abc]单个字符:A、b或c
  • [^abc]任何单个字符,但 a、 b,还是c
  • [a-z]a-z范围内的任何单个字符 -[a-zA-Z]a-Z或a-Z范围内的任何单个字符
  • ^起跑线
  • $行尾 -\字符串的开头
  • \z字尾
  • .任何单个字符
  • \这是任何空格字符
  • \S任何非空白字符
  • \d任意数字
  • \D任何非数字
  • \w任意单词字符(字母、数字、下划线)
  • \W任何非单词字符 -\b任何单词边界字符
  • (…)捕获所有封闭的东西
  • (a | b)a或b
  • 一个?零个还是一个
  • 一个*零个或多个
  • a+一个或多个a
  • a{3}正是a的3
  • 一个{3,}3或更多的
  • a的3和6之间的{3,6}

此函数在php.net上非常完美

请看这个从字符串数组中提取数字的非常简单的示例:

<?php
$strings = array ("fHzZGh4JMyfpc5visCC3q1a1ICBLWXnmfxoRa70S9HXHjBSVI4",
    "1LRWmzTQBErP6kIqXRLMgzWoVdOJKrLpUbL99sZ3XdtscAvydG",
    "5OMbG1hFMrTkMeThw64E80QqfLvxbZjo3tlsVzeJiDCDAn4D6C",
    "lrYFqKKtarRHfteYHUDx4KAEjssvs12Ix5u3YGQKATQBxtqAhn",
    "W3a3n0jzXtM2l5i8tOVnxPbBeGAz0ChzDQ6qhReQkdHTQ4sLmz");
$nums = array ();
foreach ($strings as $string) {
    preg_match_all('/\d+/', $string, $matches);
    $nums[] = $matches;
}

print_r($nums);
var_dump($num)是您的答案
var_dump( $sum );
<?php
$strings = array ("fHzZGh4JMyfpc5visCC3q1a1ICBLWXnmfxoRa70S9HXHjBSVI4",
    "1LRWmzTQBErP6kIqXRLMgzWoVdOJKrLpUbL99sZ3XdtscAvydG",
    "5OMbG1hFMrTkMeThw64E80QqfLvxbZjo3tlsVzeJiDCDAn4D6C",
    "lrYFqKKtarRHfteYHUDx4KAEjssvs12Ix5u3YGQKATQBxtqAhn",
    "W3a3n0jzXtM2l5i8tOVnxPbBeGAz0ChzDQ6qhReQkdHTQ4sLmz");
$nums = array ();
foreach ($strings as $string) {
    preg_match_all('/\d+/', $string, $matches);
    $nums[] = $matches;
}

print_r($nums);
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 4
                    [1] => 5
                    [2] => 3
                    [3] => 1
                    [4] => 1
                    [5] => 70
                    [6] => 9
                    [7] => 4
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 6
                    [2] => 99
                    [3] => 3
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [0] => 5
                    [1] => 1
                    [2] => 64
                    [3] => 80
                    [4] => 3
                    [5] => 4
                    [6] => 6
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [0] => 4
                    [1] => 12
                    [2] => 5
                    [3] => 3
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [0] => 3
                    [1] => 3
                    [2] => 0
                    [3] => 2
                    [4] => 5
                    [5] => 8
                    [6] => 0
                    [7] => 6
                    [8] => 4
                )

        )

)