【问题标题】:php substring regexphp子字符串正则表达式
【发布时间】:2011-02-14 13:21:07
【问题描述】:

我整天都在阅读 php 代码,但我似乎无法找到我认为是一个简单问题的答案。

我有一个充满字符串的数组,我想看看字符串中的第一个字符是否是数字,然后用它做一些事情,例如:

if substr($stringArray[$i],0,1) == regexsomething[0-9]) { do stuff }

我是不是都搞错了?

当然,我可以将正则表达式设置为 [^0-9] 以在开始时进行匹配,但 PHP preg_match 让我非常困惑。

任何建议都会很棒。

谢谢

【问题讨论】:

    标签: php regex arrays substr


    【解决方案1】:

    在括号外,^ 表示“开始”,但紧跟在[ 之后,表示“反转整个类”。 /[^0-9]/ 将匹配任何包含非数字的内容。匹配单个数字的正则表达式是:

    /^[0-9]$/
    

    不过,PHP 已经为此提供了一个函数:is_numeric()

    if ( is_numeric( substr( $stringArray[$i],0,1 ) ) ) { do stuff }
    

    如果您想走正则表达式路线,则不需要获取第一个字符。匹配以数字开头的任何内容的正则表达式将是:

    if ( preg_match( '/^[0-9]/', $stringArray[$i] ) ) { do stuff }
    

    【讨论】:

    • 对不起,这就是我的意思,^ 的位置错字。谢谢蒂姆!
    • is_numeric( $stringArray[$i],0,1 ) 无效,is_numeric 只需要 1 个参数!
    • if (is_numeric(substr($rowArray[$i],0,1))) 最后完成了这项工作!
    • @Tony,我的意思是 ,0,1 没有做任何事情,你可以删除它,因为它只是令人困惑。
    • @RobertPitt:抱歉,我好像删除了substr。现在修好了。 0 和 1 是 substr 的参数。它们确实很重要,因为 Tony 只想知道 first 字符是否为数字。
    【解决方案2】:

    如果您想确保字符串是数字,您可以使用is_numeric,如下所示:

    if(is_numeric($string))
    {
        //Do Something
    }
    

    如果您想确保它是单个数字,例如 7,您可以使用 < 小于运算符

    if(is_numeric($string) && $string < 10)
    {
        //Do Something
    }
    

    【讨论】:

    • 这将允许诸如“+0”或“+0.2e-1”之类的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2011-06-26
    相关资源
    最近更新 更多