\A
- всегда совпадает только с началом текста в отличие от метасимвола ^
, на который влияет модификатор m
.\G
- совпадает с позицией, в которой завершилось предыдущее совпадение. При первой итерации \G
совпадает только в начале строки, как и метасимвол \A
.\G(?!\A)
как раз исключает совпадение в начале строки и совпасть может только после предыдущего успешного совпадения.<p>
и далее с помощью \G(?!\A)
собираем всё что нужно.(?:[^\r\n<]+|<(?!/p>))*
- захватывает текст пока не встретит перевод строки или </p>
\K
- сброс начала совпадения. В документации про это написано в самом конце. \G
есть в книге "Регулярные выражения" автор Джеффри Фридл. s
метасимвол "точка" соответствует всем символам, включая перевод строк.$html = "<p> ... \n ... \r\n\r\n ... </p>";
$text = "lol";
echo preg_replace_callback(
'|<p>.*?</p>|si',
function ($m) use($text){
return preg_replace('|[\r\n]+|', $text, $m[0]);
},
$html
);
preg_replace(
'~(?:\G(?!\A)|<p>)(?:[^\r\n<]+|<(?!/p>))*\K[\r\n]+~i',
$text,
$html
);
-
и без https://regex101.com/r/QIp4uG/1/((?:https?|ftps?)\:\/\/[\w\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?|\n)/g;
/((?:https?|ftps?)\:\/\/[\w\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?|\n+)/g;
RewriteCond expr "-R '111.1.0.0/16'"
RewriteCond expr "-R '111.1.0.0/16' || -R '222.2.2.0/24' || -R '127.0.0.0/8'"
/((?:http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?)/g
/((?:https?|ftps?)\:\/\/[\w\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?)/g
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{SERVER_NAME} ^(?:www\.)?(.+)
RewriteRule (.*) https://%1/$1 [R=301,L]