Как обработать переменные внутри регулярного выражения?

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

$ content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do 
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
    veniam, quis nostrud exercitation <img src="https://example.com/img/img.jpg" 
    alt="image" width="550" height="318"> ullamco laboris nisi ut aliquip ex ea 
    commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit 
    esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat 
    non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';



    $content = preg_replace('/(<img.*) src(.*?)=(.*?)"(.*?)(img.*?)(\.)(.*?)(".*?)alt=(.*?)width=(.*?)height=(.*?) \/(>)/',

    '<script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "ImageObject",
      "author": "Company",
      "contentUrl": "$2$3$4$5$6$7, //тут все работает
      "datePublished": "'.date ("Y-m-d", 
    filemtime(utf8_decode('$2$3$4$5$6$7'))).'", //вот тут выходит ошибка, т.к. переменные регулярного выражения не обрабатываются. 
    //как исправить эту ситуацию?
      "name": $9
    }
    </script>'
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@KraydenSharp
Senior RegExp Developer
В ситуациях, когда необходимо обработать вхождения регулярного выражения функцией, используют preg_replace_callback
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы