Простой вопрос по регулярным выражениям

12 3
J4
На сайте с 21.05.2009
Offline
99
1402

Прошу помощи в работе с регулярными выражениями. Есть огромный HTML файл, имеющий очень много блоков контента, включающих в себя строки вида

<h2><b>Заголовок2</b></h2>

<h1>Заголовок1</h1>

Необходимо поменять строчки местами и сделать

<h1>Заголовок1</h1>

<h2><b>Заголовок2</b></h2>

Спасибо за помощь.

ixRock
На сайте с 14.11.2006
Offline
46
#1

ну как-то так:

$filedata = preg_replace("/(<h2>.*<\/h2>)(\s*?)(<h1>.*<\/h1>)/i", "$3$2$1", $filedata);

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
FeoOne
На сайте с 27.12.2008
Offline
32
#2

preg_replace("/(<h2>.*<\/h2>)([\s\n]+)(<h1>.*<\/h1>)/i", "$3$2$1", $filedata);

ixRock
На сайте с 14.11.2006
Offline
46
#3
FeoOne:
preg_replace("/(<h2>.*<\/h2>)([\s\n]+)(<h1>.*<\/h1>)/i", "$3$2$1", $filedata);

е***утым нет покоя, то одно им то другое?)

\s включает все пробельные символы

edogs software
На сайте с 15.12.2005
Offline
775
#4
ixRock:
$filedata = preg_replace("/(<h2>.*<\/h2>)(\s*?)(<h1>.*<\/h1>)/i", "$3$2$1", $filedata);
е***утым нет покоя, то одно им то другое?)

Вот уж действительно нет покоя, сначала выбирать в качестве ограничителей регулярки / , а потом городить забор типа этого /\/\/\/\/\/\/\/\/\/\/ , в выражениях вида <\/h2> ... вместо того что бы выбрать ограничителем ~ (допустим) и не париться.

Пишем только потому, что постоянно встречаем код вида ""\"\"\"\"\"\"\"\"\"" вместо '"""""""' в строках и /\/\/\/\/\/\/\/\/\/\/ вместо допустим ~//////~ в регулярках, при чем у советующих людей. Окей, пусть это мелочь, пусть это ерунда, но елки палки, неужели Вас не парит набирать столько слэшей, вместо того что бы решить вопрос вообще без них? Пусть не парит, но советовать-то такой стиль зачем?! Окей, пусть советуете такой стиль, но зачем других-то обзывать после этого? :D

Сорри, накипело:)

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
J4
На сайте с 21.05.2009
Offline
99
#5

Народ ещё 1 вопрос по рег выражениям.

Имеется огромный html файл, содержащий много списков, каждая строка каждого списка заканчивается тегом <br />. Например:

Заяц<br />

Лиса<br />

Волк<br />

Осёл<br />

Мне нужно во всём html файле поменять местами между собой строки заканчивающиеся тегом <br />

Например первую с четвёртой и вторую с третьей(т е строку с 1-м вхождением <br /> на строку с 4-м вхождением <br />).

Спасибо за помощь.

ixRock
На сайте с 14.11.2006
Offline
46
#6
j1gs4w88:
Народ ещё 1 вопрос по рег выражениям.
Имеется огромный html файл, содержащий много списков, каждая строка каждого списка заканчивается тегом <br />. Например:
Заяц<br />
Лиса<br />
Волк<br />
Осёл<br />

Мне нужно во всём html файле поменять местами между собой строки заканчивающиеся тегом <br />
Например первую с четвёртой и вторую с третьей(т е строку с 1-м вхождением <br /> на строку с 4-м вхождением <br />).
Спасибо за помощь.

ну тут помоему и регулярными выражениями не пахнет...

самое простое решение загнать все строки файла в массив и сменить порядок на обратный.

примерно так:

$pathfile = 'myfille.html';

file_put_contents($pathfile, implode('', array_reverse(file($pathfile))));

J4
На сайте с 21.05.2009
Offline
99
#7

Пример неудачный привёл. Порядок нужен не обратный, а тот который я укажу.

Bitman
На сайте с 05.07.2009
Offline
112
#8

j1gs4w88, так надо обозначить порядок сразу

Северный лес (https://euro-vagonka.by) DREW (https://drew.by) AvtoDrive (https://avtodrive.by)
J4
На сайте с 21.05.2009
Offline
99
#9

Ок. Порядок будет такой. 5 строк оканчивающиеся<br />. 5 1 3 4 2

Bitman
На сайте с 05.07.2009
Offline
112
#10

где то так

$filedata=preg_replace("#([^<]+)<br />[\s\n]*([^<]+)<br />[\s\n]*([^<]+)<br />[\s\n]*([^<]+)<br />[\s\n]*([^<]+)<br />[\s\n]*#i", "$5<br/>$1<br/>$3<br/>$4<br/>$2<br/>", $filedata);
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий