如何仅在字符串中找到子字符串?

时间:2019-05-14 18:34:49

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

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

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

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

  

Lorem Ipsum只是印刷和排版的虚拟文本   行业。 Lorem Ipsum一直是业界标准的伪文本   从1500年代开始,当一个未知的打印机拿起一个   将其打乱制成类型样本_文件编号:4575-NIA-   000本书。它不仅生存了五个世纪,而且还幸免于难   进行电子排版,基本上保持不变。它是   1960年代随着发行日期的普及而流行:2016年3月4日   包含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页面上产生所需的输出。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。

此模式将找到您所需的内容。
由于它是一个很长的正则表达式,因此我将不做详细解释,但是您可以轻松找到有关正则表达式工作方式的信息。

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