Извлечь из строки дату создания, дату последнего изменения и имя метода с регулярным выражением - PullRequest
0 голосов
/ 14 февраля 2019

Ниже части кода, хранящейся в файле с именем
Website.php

<?php
namespace AdamInChains;
class Website
{

/**
 * 02.14.2019 13:24:59 creation date
 * 02.14.2019 13:28:23 last modified date
 * @param array $meta_tags
 *
 * @return string
 */
public function index(array $meta_tags) : string{}

/**
 * 02.14.2019 13:45:59 creation date
 * 02.14.2019 13:49:21 last modified date
 * @param array $meta_tags
 *
 * @return string
 */
public function about(array $meta_tags) : string{}

/**
 * 02.14.2019 14:01:52 creation date
 * 02.14.2019 14:33:01 last modified date
 * @param array $meta_tags
 *
 * @return string
 */
public function contact(array $meta_tags) : string{}
}

Мне нужно извлечь дату создания и дату последнего изменения

и затем сохранить результаты регулярных выражений в одном массиве таким образом

$array = [
    // method name
    "index" => [
        "creation_date"=>"02.14.2019 14:01:52",
        "last_modified_date"=>"02.14.2019 13:28:23"
    ]
];

В основном, когда пользователь, в данном случае AdamInChains и вы можете увидеть это из объявления пространства имен, создает новую страницу на своем веб-сайте, один новый метод, объявленный в качестве имени входной страницы, добавляется в класс, а даты добавляются в комментарий документа для метода.

до сих пор я не могу извлечь только имена методов (см. кодниже), но безуспешно с другими задачами.

// regex pattern
$re = '/public function.(\w{0,})/m';
// file 'Website.php'
$str = file_get_contents('Website.php');

preg_match_all($re, $str, $matches);

// Print the entire match result
var_dump($matches);

Это результаты var_dump, и я доволен этим

Кто-нибудь?

1 Ответ

0 голосов
/ 14 февраля 2019

Вот регулярное выражение, которое вы можете использовать для этого:

(?<creationDate>\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}:\d{2})\screation\sdate[^\Z]*?(?<modifiedDate>\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}:\d{2})\slast\smodified\sdate[^\Z]*?public\sfunction\s(?<methodName>[^\(\s]+)

https://regex101.com/r/7wrrhj/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...