【问题标题】:Regular Expressions - preg or substr?正则表达式 - preg 还是 substr?
【发布时间】:2014-03-26 14:57:29
【问题描述】:

我有几个想要处理的值(主要是字符串),我想知道哪种方式最适合我的情况。

我将拥有一个 foreach 循环,我想在其中检查并插入数据库中的编辑值。

结构示例:

foreach($values as $value) 
{
    //string check is going to be here
    // .....

    //insert the data into the database
    $sql = "INSERT INTO results VALUES ('', 'xx', 'xx', 'xx', 'xx')";
    $result = mysql_query($sql);
}

我可能得到的值示例:

  1. 价值,价值
  2. 宇宙某处
  3. 3.532523, -55.523525
  4. 价值-价值

我想要做的是不接受(实际上将它们的值更改为'Not given')

a) 数字 b) 长度超过 10 个字符的字符串 c) 单词之间没有空格 d) 如果有 , 或 - 仅在这些之前保留字符串的第一部分

例如,我正在测试的字符串检查是否有这样的值 => 字符串,字符串 我只想保留第一部分,由

$str = value, value $str = substr($str, 0, stripos($str, ','));

使用哪种技术可以更好地完成所有这些检查? (preg_match & replace or substr & stipos)

【问题讨论】:

  • “编程时间比机器时间更宝贵”。最简单的就是最好的,至少在这里:处理时间差异在您的情况下可能非常微不足道(不过,RegEx 更有趣,我承认)

标签: php regex string


【解决方案1】:

此正则表达式可能匹配您想要保留的内容,但允许使用数字和 _:

/^\w{,10}/

使用负前瞻修正允许的数字并避免 _:

/^(?=\d{,9}[a-zA-Z])[a-zA-Z]{,10}/

如果根本不允许使用数字:

/^[a-zA-Z]{,10}/

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多