PHP Регулярка БУКВА</p>\n<p>

Ragnarok
На сайте с 25.06.2010
Offline
226
536

разбираюсь с регуляркой..

нужно в тексте примерно такого вида

тексттексттекст</p>

<p>тексттексттекст

заменить

</p>

<p>

на пробел

При этом, могут встречаться теги <img

тексттексттекст<img src="" ... /></p>

<p>тексттексттекст

и в этом случае заменять </p>\n<p> не нужно.

как такое сделать?

//TODO: перестать откладывать на потом
[umka]
На сайте с 25.05.2008
Offline
456
#1

Если "<img src=...>" переменной длины (а скорей всего так и есть), то одним выражением этого не сделать.

Только в два этапа.

Лог в помощь!
Ragnarok
На сайте с 25.06.2010
Offline
226
#2
'[umka:
;8934116']Если "<img src=...>" переменной длины (а скорей всего так и есть), то одним выражением этого не сделать.
Только в два этапа.

может быть без регулярного, хоть как-то заменить

БУКВА</p>

<p>БУКВА

на

БУКВА БУКВА

тупо перебор

$contents=str_replace($alph[$i]."</p>\n<p>".$alph[$j], $alph[$i]." ".$alph[$j], $contents);

не срабатывает ($alph[]-- массив букв)

[umka]
На сайте с 25.05.2008
Offline
456
#3

Ну если вам не важно, что перед "</p>" может быть именно "<img ...>", а достаточно просто проверять наличие ">" перед "</p>", то так

$str=preg_replace('#(?<!>)</p>[\r\n]+<p>#s',' ',$str);

Ragnarok
На сайте с 25.06.2010
Offline
226
#4
'[umka:
;8934326']Ну если вам не важно, что перед "</p>" может быть именно "<img ...>", а достаточно просто проверять наличие ">" перед "</p>", то так

$str=preg_replace('#(?<!>)</p>[\r\n]+<p>#s',' ',$str);

Спасибо! так помогло!

M8
На сайте с 01.03.2008
Offline
100
#5

бред написал. потерто.

Сумма разума на планете - величина постоянная. А население растёт ... Русской грамоте обучен плохо.
Ragnarok
На сайте с 25.06.2010
Offline
226
#6

Ещё вопрос:

в тексте часто встречаются картинки с атрибутами

width:127.52pt; height:87.04pt;

можно их регуляркой вытащить, умножить значения на какой-нибудь коэффициент (допустим, 1.5) и заменить?

[umka]
На сайте с 25.05.2008
Offline
456
#7

$str="width:127.52pt; height:87.04pt;";

$factor=1.5;

$str=preg_replace('#(width|height)(:\s*)([\d\.]+)pt;#e',"'\\1\\2'.(\\3*$factor).'pt;'",$str);

echo $str;

Ragnarok
На сайте с 25.06.2010
Offline
226
#8

Отлично! супер! спасибо огромное!!

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