gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks
Но не говорит о том, как именно это делается
Предположим, вам надо добавить небольшое изменение - пропускать ссылки, которые находятся внутри блоков pre и code
вы проявили невнимательность в preg_replace_callback. Это и есть проблема, это и будет у вас всегда проблемой, если будете парсить HTML регулярками
А насчёт того, что я вам посоветовал регулярку после обработки парсером, так это потому, что это как раз и место для регулярок: одна типовая строчка. Тут не запутаешься
$regularUrlPattern = '/(https:\/\/[\w_-]+(?:(?:\.[\w_-]+)+)[\w.,@?^=%&:\/~+#-]*[\w][ ]{1,}\/)/';
$detailTextWithoutSpaces = preg_replace_callback($regularUrlPattern, 'self::deleteSpaces', $detailText);
private static function deleteSpaces($match)
{
return str_replace(' ', '', $match[0]);
}
json парсить регулярками
через запросы по селекторам. Как в js/css примерно.
вы пришли сюда с регуляркой потому что не осилили её использовать
Совпадения по регулярке в $match, отлично находятся
сравните с кодом сверху который я отправлял
спарсить HTML регулярками, но зачем оно нам надо?
При помощи парсера, что вам предложили, выбираете все ссылки, которые хотите проверить, проверяете их атрибут href на вшивость, и заменяете этот атрибут на корректное значение. Потом сохраняете весь DOM. Ктати, вот тут, при проверке конкретной ссылки, если не терпится, можно использовать регулярку, ведь это просто одна строчка урла
как мне без регулярок найти в паре сотне HTML-ек различные битые ссылки с пробелами на конце?
ругими словами нужно возвращать исправленную ссылку
вызовы вида 'self::function' задеприкейчены в PHP 8.2:
Судя по всему Вы правы. Попробовал прогнать файл через консоль, как раз таки на проблемной странице получаю ошибки:
И итоговый отчёт: