【问题标题】:Need a little reg-exp help需要一点正则表达式帮助
【发布时间】:2011-05-12 14:05:55
【问题描述】:

我在 reg-exp 方面很糟糕,所以我需要一些帮助才能让它正确。

我得到了一个 PHP 变量,其中包含从 PDF 创建的 HTML 代码。这些页面是分开的,带有以下样式的注释:

<!-- Page 1 -->

我需要拆分每个评论的内容,以便将页面彼此分开。我尝试只使用explode('&lt;!-- Page', $content),但这会将标签的其余部分留在下一页的开头,因此显然这不是一个足够好的解决方案。

所以我需要帮助的是找到一个将在&lt;!-- Page X --&gt; 上拆分的正则表达式,其中 X 可以是任何数字。谁能帮帮我?

【问题讨论】:

  • 如果您使用诸如Expresso 之类的正则表达式工具,那么您将能够非常轻松地自己编写这些。
  • @Town 好像是个不错的工具,我试试看:)谢谢建议

标签: php html regex


【解决方案1】:

这似乎工作得很好;

<?php

$foo = '

Hello.

<!-- Page 2 -->

Bar

<!-- Page 3 -->

Foo
';

$pages = array_map( 'trim', preg_split( '~<!-- Page (\d+) -->~m', $foo ) );

var_dump( $pages );

输出:

berry@berry-pc:~$ php foo.php 
    array(3) {
  [0]=>
  string(6) "Hello."
  [1]=>
  string(3) "Bar"
  [2]=>
  string(3) "Foo"
}

希望对您有所帮助。

【讨论】:

  • 我不懂 PHP,但我很确定你会希望在 \d 之后加一个 + 来表示一个或多个数字(对于第 10 页以上)
  • 您使用的模式似乎只匹配 Page 0Page 9 但我认为它也应该匹配 Page 42第 102 页...模式必须是 \d+ 而不是 \d
  • 工作得很好:) 非常感谢!
【解决方案2】:

简单的正则表达式:

<!-- Page [0-9]+ -->

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多