PHP正则表达式在html之间匹配数据

发布于 2024-12-27 07:10:00 字数 436 浏览 1 评论 0原文

我创建了一个正则表达式,它实际上提取了我需要的数据,但它还包括“>”性格,我该如何摆脱它?这是代码。

<?php

$content = file_get_contents('www.example.com');
$pattern = "/>([0-9]{2}\.[0-9]{3})/";
preg_match_all($pattern, $content, $matches);
echo $matches[0][2];

?>

从中提取的 HTML

<td style="text-align:right" class="row">23.020</td>

给出了“<23.020”,但我需要的是“23.020” 我知道这是一个n00b问题,但我如何摆脱“<”

i have created a regex, that actually extracts the data what i need, but it also includes ">" character, how do i get rid of it? Here's the code.

<?php

$content = file_get_contents('www.example.com');
$pattern = "/>([0-9]{2}\.[0-9]{3})/";
preg_match_all($pattern, $content, $matches);
echo $matches[0][2];

?>

and the HTML to extract from

<td style="text-align:right" class="row">23.020</td>

it gives me the "<23.020" but what i need is "23.020"
i know it's a n00b question, but how do i get rid of the "<"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

飘过的浮云 2025-01-03 07:10:00
$content = '<td style="text-align:right" class="row">23.020</td>';
$pattern = "/>([0-9]{2}\.[0-9]{3})/";
preg_match_all($pattern, $content, $matches);
var_dump($matches);

会给你

array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(7) ">23.020"
  }
  [1]=>
  array(1) {
    [0]=>
    string(6) "23.020"
  }
}

所以只需使用$matches[1][0]

$content = '<td style="text-align:right" class="row">23.020</td>';
$pattern = "/>([0-9]{2}\.[0-9]{3})/";
preg_match_all($pattern, $content, $matches);
var_dump($matches);

will give you

array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(7) ">23.020"
  }
  [1]=>
  array(1) {
    [0]=>
    string(6) "23.020"
  }
}

So simply use $matches[1][0].

静若繁花 2025-01-03 07:10:00

如果您想匹配正则表达式中的某些内容,但不捕获它,那么您可以使用“断言< /a>”。对于您的字符串,它将是 (?<=[>]) 后视。

 /(?<=>)([0-9]{2}\.[0-9]{3})/

但是,在您的情况下,您已经有一个不包括 > 锚点的捕获组。您只需要访问正确的结果组即可:

 echo $matches[1][2];

[1] 引用内部 (...) 括号组,而您的 [0]< /code> 将返回完整的匹配。

If you want to match something in a regex, but not capture it, then you can use an "assertion". For your string it would be a (?<=[>]) lookbehind.

 /(?<=>)([0-9]{2}\.[0-9]{3})/

In your case however, you already have a capture group which excludes the > anchor. You just need to access the right result group then:

 echo $matches[1][2];

The [1] refers to the inner (...) parens group, whereas your [0] would return the complete match.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文