为什么我的简单正则表达式不起作用?

时间:2010-10-07 01:22:48

标签: php regex

我有一个步骤列表,他们echo作为li中的ol项目进入视图。

所以,我需要删除前导数字(看起来像ol { list-style: decimal }

这是一个示例数组成员

  
      
  1. 结合1汤匙油......
  2.   

我试过这个正则表达式

/^\d+\.\s*/

但是,它没有删除上面示例中的1.

但是,当我删除行锚点(^)的开头时,它可以正常工作。

这是完整的代码。

foreach($method as &$step) {

    $step = trim(preg_replace('/^\d+\.\s*/', '', $step));
    var_dump($step); // This is what I quoted above
}

我做错了什么?

谢谢!

更新

对不起,伙计们,这是其中一行的var_dump() ..

string(43) "4. Remove from heat and cover to keep warm."

对我而言,数字之前没有任何内容。

2 个答案:

答案 0 :(得分:3)

数字之前是否有空格?

尝试

/^\s*\d+\.\s*/

答案 1 :(得分:1)

周围可能有额外的空白。您还可以^使用m修饰符更改其行为:

<?php
$s = <<<EOS
  1. Combine 1 tbs oil...
  2. Hello World
  3. Ok then!
EOS;
echo trim(preg_replace('/^\s*\d+\.\s*/m', '', $s));