PHP регулярное выражение из переменной - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь переопределить дату и время совпадения из переменной php 7.2.

Данные с датой и временем поступают прямо из запроса к базе данных. Затем выполняется поиск и замена данных для отображения, но я попытался сопоставить данные до и после поиска и замены.

$textdescription = $row['TEXT_DESCRIPTION'];
$search = array('#$#', '<(>', '<)>', '[');
$replace = array("\r\n", " ", " ", "\r\n\r\n[");
$ticketnotes = str_replace($search, $replace , $textdescription);
echo nl2br(htmlentities($ticketnotes, ENT_QUOTES));

Это описание отображается нормально ... но теперь я пытается извлечь даты и время из этих данных.

Пример $ textdescription в качестве краткого примера:

    03/13/2020 18:04:50 WJG
    [Question] - Still Having Issues
    [Environment] - NA
    [Answer] - I explained
    [Next Steps] - ANSWERED

    03/07/2020 15:18:58 JAG
    [Question] Startup Questions
    [Environment] series
    [Answer] Customer sees 
    [Next Steps] Completed

Мой php код, ищущий два совпадения даты и времени, приведенных выше:

$re = "/(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2}):(\d{2})/";
preg_match_all($re, $textdescription, $matches);
print_r($matches);

$ match ничего не возвращает. Если я скопирую указанную выше переменную $ textdescription и вручную помещу ее в переменную в коде, все будет соответствовать ожидаемому. Только при получении его из БД у меня нет совпадения. Я также попробовал $ ticketnotes вместо $ textdescription безуспешно.

Надеюсь, что-то простое я упустил из виду. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 апреля 2020

Спасибо всем за подсказки и идеи.

Оказывается, $ textdescription показывает в окне браузера без проблем, но, глядя на источник вывода (используя Ctrl + U), я вижу даты MM \ DD \ YYYY и время разделены намного дальше чем в окне браузера. Я посчитал пробелы и изменил регулярное выражение.

Рабочий код выглядит следующим образом:

$re = "/(\d{2})\/(\d{2})\/(\d{4})          (\d{2}):(\d{2}):(\d{2})/";

В нем было 10 пробелов. Итак, в итоге, при сопоставлении регулярного выражения, даже пробел имеет значение, и вывод в окне браузера не всегда совпадает с тем, что в коде.

...