Не получилось, и с \r\n тоже не вышло и я не пойму в чем дело.
А как вы определяете? В браузере вы не увидите этих переводов - их или в текст. файле надо смотреть, или смотреть в исходном коде, или выводить в браузер с помощью var_dump().
Попробуйте под этой строкой добавить контрольную точку, и посмотрите в браузере результат
А юникод потому что некоторые русские символы не влезли?
u - потому что работаете с многобайтовой кодировкой. Но есть случаи, в которых при работе с юникодом, модификатор u можно не указывать - обычно это когда в шаблоне искомое слово прописано как есть. Сравните эти два примера:
И еще, я правильно понял, если необходимо разрешить еще какие-либо спецсимволы, то за *(?:' ;) добавляю еще одну группу например *(*(?:"))
Теоретически - да. А практически - в регулярных выражениях нужно чётко понимать, в какой последовательности символы должны находиться в строке для успешного поиска соответствий regexp-шаблону. Это наиболее важный момент, который нужно чётко себе представлять. Иначе выражаясь, для регулярных выражений важна позиция символов в строке. (Добавление)
В функции preg_replace() ссылки на подмаски записываются ввиде последовательности символов, состоящих из знака доллара $, и номера подмаски, например (обязательно в одинарных кавычках): '$1' - ссылка на первую группу; '$2' - ссылка на вторую группу (и т.д.)
avvaken7, может я не внимательно просмотрел ваш код, но так и не увидел - где вы передаёте эти переносы? Записать их можно либо ввиде строки в двойных кавычках
в чем принципиальная разница между ( ) и (?:шаблон)
Разница в том, что обычные круглые скобки помимо группировки, выполняют ещё и "захват" найденных соответствий (сравните результирующие массивы - в случае с простыми круглыми скобками, элементов в массиве будет больше):
Обратите внимание - первый элемент второго массива будет соответствовать полному вхождению шаблона, а второй элемент будет соответствовать только той части шаблона, которая была записана в круглых скобках.
Ещё одна особенность захватывающих скобок - это возможность ссылаться на т.н. "подмаски" прямо внутри шаблона:
В этом примере последовательность символов \1 будет ссылаться на захваченное (в случае соответствия шаблону) значение, соответствующее выражению [a-z]+. Нумерация ссылок на подмаски начинается с единицы, и считается слева направо. Предыдущий пример можно записать с двумя ссылками на подмаски: