У меня есть форма, в которой я беру HTML-код из редактора TinyMCE в качестве входного файла в одном из своих текстовых полей для создания информационного бюллетеня. Я хотел бы добавить utm-коды в конце каждой ссылки. Я смоделировал шаблон RegEX и заменил его на онлайн-редактор, но сохраненный код является обычным href без utm-кодов.regex - preg_replace в моем скрипте PHP не работает
<?php
$subject=$_POST['subject'];
$from_email=$_POST['from_email'];
$from_name=$_POST['from_name'];
$replyto_email=$_POST['replyto_email'];
$replyto_name=$_POST['replyto_name'];
$lingua=$_POST['lingua'];
$body = mysqli_real_escape_string($db, $_POST['editor1']) ;
$string = $body;
$pattern = '/href="([^"]+)/';
$replacement = '$0?utm_source=newsletter&utm_medium=email&utm_campaign='.$subject;
$txt = preg_replace($pattern, $replacement, $string);
$stmt=null;
$stmt=$db->prepare("INSERT INTO newsletter_email(subject,from_email,from_name,replyto_email,replyto_name,lingua,body) VALUES('$subject','$from_email','$from_name','$replyto_email','$replyto_name','$lingua','$txt')");
if (!$stmt) {
log_msg($db->error);
die();
}
$stmt->execute();
$stmt->close();
$db->close();
?>
Пример $ содержимого тела от TinyMCE
$body = "<html><head></head><body><a href="example.com" target="_blank">Test</a></body></html>"
Пример $ содержимого тела после preg_replace
$body = "<html><head></head><body><a href="example.com?utm_source=newsletter&utm_medium=email&utm_campaign=Email Subject" target="_blank">Test</a></body></html>"
Явная легкодоступная пара входных и ожидаемых результатов всегда приветствуется при задании вопросов RegEx. – revo
Вы правы. Здесь: '' -> '' – Otto
Ваша строка замены неполна. Это должно быть '$ replacement = 'href =" $ 1? Utm_source = newsletter & utm_medium = email & utm_campaign ='. $ Subject; ' – revo