小编ten*_*ken的帖子

警告:preg_match():未知修饰符“<”

我正在尝试运行我在在线 php regex 测试网站上调试的正则表达式。

这是完整的正则表达式:

$rule = '/[\s\S]*<(b|strong)>[\s\S]*notes:[\s\S]*<(\/b|\/strong)>([\s\S]*?)<(b|strong)>(sources|source|citation|data sources|last update)[\s\S]*/im';
Run Code Online (Sandbox Code Playgroud)

即使使用更简单的测试正则表达式:

$rule = "/[\s\S]*<(b|strong)>[\s\S]*/im";
Run Code Online (Sandbox Code Playgroud)

我仍然从这段代码中得到一个错误:

$matches = array();
preg_match($source_html, $rule, $matches);
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

警告:preg_match():未知修饰符“<” 在 .../FragmentGrabber.php 第 63 行

我不知所措,试图在我的本地机器上解决这个问题。有没有办法解决这个警告,让我的正则表达式正常工作。我试过修复我的正则表达式的转义字符,但这没有帮助。可能是字符编码问题?!请注意&lt;输出与<.

编辑:

这是我的课程的片段,如果有人真的想要,我会发布整个内容。

  // d() below is the Kint debugger.
  public function get_fragments_by_name($source_html, $name)
  {
    $matches = array();
    $rule = self::generate_regex_rule($name);
    preg_match($source_html, $rule, $matches);
    return $matches;
  }

  private function generate_regex_rule($name)
  {
    $end_tags = self::get_end_tag_options($name);
    $rule = "/[\s\S]*<(b|strong)>[\s\S]*/";# . $name . ":[\s\S]*<(\/b|\/strong)>([\s\S]*?)<(b|strong)>(" . $end_tags . ")[\s\S]*/im";
    d($rule);
    return $rule; …
Run Code Online (Sandbox Code Playgroud)

php regex

1
推荐指数
1
解决办法
2030
查看次数

标签 统计

php ×1

regex ×1