【问题标题】:PHP regex find value in stringPHP正则表达式在字符串中查找值
【发布时间】:2012-10-31 10:51:36
【问题描述】:

好的,因为我从来没有真正了解过 PHP 中的正则表达式,如果有人可以链接到一篇可以理解的文章,那就太棒了...

在这种情况下,我想在字符串中查找一个值。

如果示例

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum";

我想要一个返回“10”的函数。如果它存储在数组中,并且如果有多个我希望它们在一个数组中,该函数可以检索其中的许多,那将是可爱的。

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum [get_this_value=9] etc etc";

会返回数组(10, 9) 等等...

【问题讨论】:

  • 在线 RegEx 的最佳来源是 http://www.regexbuddy.com/regex.html 如果您负担得起(30 美元),RegExBuddy 值得每一分钱,并且会在很短的时间内为自己的生产力付出代价。
  • 我和你在同一条船上使用正则表达式,但由于开始观看这个系列,我正在变得更好:blog.themeforest.net/screencasts/…你想要一篇文章,这些是视频,但它们从非常基础知识和工作。
  • 谢谢! :) 我会检查的!

标签: php regex string-matching


【解决方案1】:

首先您应该了解正则表达式。我强烈推荐this tutorial

然后您可以在PHP's documentation 中阅读一些特定于 PHP 的正则表达式问题。

但是为了让您开始,这将解决您的问题:

preg_match_all("/\[[^\]=]*=(\d+)\]/", $string, $matches);

现在$matches[1] 将成为您想要的数组。请注意,这不依赖于特定的字符串get_this_value

为了让你通过链接页面实际自学一些正则表达式,我不会详细解释这个正则表达式,而只是告诉你我使用过的概念。未转义的方括号[...] 标记一个字符类。在这种情况下(由于^)一个否定\d 是一个内置字符类+ 是一个重复量词。和括号 (...) 标记一个捕获组

【讨论】:

    【解决方案2】:
    <?php
    $string = "blah blah blha lorem ipsum [get_this_value=10] more lorem [get_this_value=13] ipsum";
    
    preg_match_all("~\[get_this_value=(\d+)\]~i", $string, $matches);
    print_r($matches);
    /*
    
    Array
    (
        [0] => Array
            (
                [0] => [get_this_value=10]
                [1] => [get_this_value=13]
            )
    
        [1] => Array
            (
                [0] => 10
                [1] => 13
            )
    
    )
    */
    

    【讨论】:

    • 它没有伤害 ;)。不过谢谢指出,我删了。
    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 2012-06-09
    • 1970-01-01
    • 2012-05-28
    • 2012-12-01
    • 2016-07-26
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多