【问题标题】:How to only find a substring in a string?如何仅在字符串中查找子字符串?
【发布时间】:2019-10-01 20:15:10
【问题描述】:

我的 php 页面上有一个大字符串。

我需要找到这个大字符串的一小部分。

例如,大字符串如下所示:

Lorem Ipsum 只是打印和排版的虚拟文本 行业。 Lorem Ipsum 一直是业界标准的虚拟文本 自 1500 年代以来,当一位不知名的印刷商采用了一种类型的厨房和 将其加扰以制作类型样本_文件编号:4575 - NIA - 000 本书。它不仅经历了五个世纪,而且经历了飞跃 进入电子排版,基本保持不变。它是 于 1960 年代普及,发行日期:2016 - 03 - 04 包含 Lorem Ipsum 段落的 Letraset 表,以及最近的 使用 Aldus PageMaker 等桌面排版软件,包括 Lorem Ipsum 的版本。

所以,我需要在我的 php 页面中找到并显示的是 Document Number : 4575 - NIA - 000Date: 2016 - 03 - 04

我尝试过这样的事情:

$date = substr($result, 0, strpos($result, 'Date:'));
echo $date;

但这不会在我的 php 页面上产生所需的输出。

我该如何解决这个问题?

【问题讨论】:

    标签: php regex string preg-match preg-match-all


    【解决方案1】:

    您可以使用正则表达式。

    这个模式会找到你需要的。
    由于它是一个很长的正则表达式,我不会详细解释它,但您可以轻松找到有关正则表达式如何工作的信息。

    preg_match_all("/Document\s+Number\s*:\s*(.*?\s*-.*?\s*-\s*.*?)\s|Date\s*:\s*(\d{4}\s*-\s*\d{2}\s*-\s*\d{2})/i", $str, $matches);
    

    但简而言之,它会查找模式并捕获字符串的所需部分。
    \s*\s+ 是空格,可选 (*) 或要求但允许无限 (+)。\d 是数字。 \d+ 将是任意长度的数字。 \d{4} 是四位数字。
    .* 是任意长度。

    https://3v4l.org/nY1aM

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2011-07-13
      • 2021-04-21
      • 2020-06-11
      • 1970-01-01
      • 2021-08-13
      • 2015-10-28
      相关资源
      最近更新 更多