【问题标题】:preg_match - get numeric value from a functionpreg_match - 从函数中获取数值
【发布时间】:2011-07-26 12:46:05
【问题描述】:

我正在尝试从transaction 函数中获取值。

例子:

$response = "transaction(12346675); $('#Tracking').html('<script> random random  random</script>');";

我想获得12346675 的价值。怎么可能?

我尝试过preg_match('/([\w\_\d]+)\(([\w\W]*)\)/', $response, $match);,但它似乎不起作用。

谢谢

【问题讨论】:

  • 函数名会一直是transaction吗?

标签: php regex preg-match web-scraping


【解决方案1】:
preg_match('/^transaction\((\d+)\)/', $str, $m);
print_r($m);

广义模式:

  • ^\s*\w+\s*\(\s*(\d+)\s*\)
  • 如果函数名是 PHP 标识符:
    ^\s*[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*\s*\(\s*(\d+)\s*\)

类似问题请见:Regex Help, Search for function names and return them

【讨论】:

    【解决方案2】:
    reg_match('/\D+\((\d+)\)\.*/', $response, $match);
    

    【讨论】:

      【解决方案3】:

      获取第一个单词后面的数字,前提是它被括在括号中:

      preg_match('/\w+\((\d+)\)/', $response, $match);
      

      【讨论】:

        【解决方案4】:

        如果您正在寻找该行的第一个数字,则无需将其与表达式的后半部分复杂化:

        preg_match('/(\d+)/', $response, $match);
        

        这是对您线路上找到的第一个数字的简单匹配。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 2014-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-10
          • 2018-09-29
          相关资源
          最近更新 更多