Как найти только подстроку в строке? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть большие строки на моей странице php.

Мне нужно найти небольшую часть этой большой строки.

Например, большая строка выглядит следующим образом:

Lorem Ipsum - просто фиктивный текстполиграфия и набор текста.Lorem Ipsum является стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взял набор шрифтов и скремблировал его, чтобы сделать образец типа _ Номер документа: 4575 - NIA - 000 книга.Он пережил не только пять веков, но и скачок в электронном наборе текста, оставаясь практически неизменным.Он был популяризирован в 1960-х годах с датой выпуска: 2016 - 03 - 04 листов Letraset, содержащих отрывки Lorem Ipsum, и совсем недавно - с программным обеспечением для настольных издательских систем, таким как Aldus PageMaker, включая версии Lorem Ipsum.

Итак, что мне нужно найти и отобразить на моей странице php это Document Number : 4575 - NIA - 000 и Date: 2016 - 03 - 04.

Я пробовал что-то вроде этого:

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

Но это не даеттребуемый вывод на моей странице php.

Как мне решить эту проблему?

1 Ответ

2 голосов
/ 14 мая 2019

Вы можете использовать регулярные выражения.

Этот шаблон найдет то, что вам нужно.
Поскольку это очень длинное регулярное выражение, я не буду его подробно объяснять, но вы легко сможете найти информацию о том, как работает регулярное выражение.

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

...