Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите составить регулярное выражение (https://javascript.ru/forum/server/65660-pomogite-sostavit-regulyarnoe-vyrazhenie.html)

snovapavel 01.11.2016 11:31

Помогите составить регулярное выражение
 
Добрый день!

Подскажите, пожалуйста, как с помощью регулярных выражений PHP получить строку, у которой в начале и в конце (ВАЖНО!) строки НЕ стоит тег div (не обрамляет её (строку))?

Пример:

// эту строку не надо
<div>Lorem ipsum.</div>

// эту строку надо
<div>Lorem</div> ipsum.

// эту строку надо
Lorem ipsum.

// и эту строку надо
<li>Lorem ipsum.</li>

// эту не надо
<div><span>Lorem ipsum.</span></div>

ksa 01.11.2016 13:40

Цитата:

Сообщение от snovapavel
получить строку, у которой в начале и в конце (ВАЖНО!) строки НЕ стоит тег div

Начать можно с этого...

var arr=[
	'<div>Lorem ipsum.</div>',
	'<div>Lorem</div> ipsum.',
	'Lorem ipsum.',
	'<li>Lorem ipsum.</li>',
	'<div><span>Lorem ipsum.</span></div>'
];
var reg=/^<div>.*(?=<\/div>$)/i;
for (var i=0; i<arr.length; i++) {
	alert(arr[i]+' - '+((reg.test(arr[i]))? 'не брать': 'брать'));
};

laimas 01.11.2016 14:11

ksa,
это не РНР. :)

ksa 01.11.2016 14:15

Цитата:

Сообщение от laimas
это не РНР

Там разный подход к регулярным выражениям? Или синтаксис другой?

ksa 01.11.2016 14:22

Цитата:

Сообщение от laimas
это не РНР

Если верить этому
http://www.skillz.ru/dev/php/article...chaynikov.html
Различий не так уж и много... :D

laimas 01.11.2016 14:27

Цитата:

Сообщение от ksa
Там разный подход к регулярным выражениям? Или синтаксис другой?

В РНР рег. выражения Perl совместимые и конечно богаче, чем в JS. И задается строка, а не массив. Чего нет точно в РНР, так это for (var i=0; i<arr.length; i++) :)

Да и не нужно этого, проще удалить непотребное, оставив нужное, и если каждая строка не имеет переносов, то просто:

$s = '<div>Lorem ipsum.</div>
 
<div>Lorem</div> ipsum.
 
Lorem ipsum.
 
<li>Lorem ipsum.</li>
 
<div><span>Lorem ipsum.</span></div>';

$s = preg_replace('/<div>.+<\/div>/', '', $s);

echo $s;

laimas 01.11.2016 14:28

Цитата:

Сообщение от ksa
Если верить этому .... Различий не так уж и много...

Не верьте, рег. выражениям JS до рег. выражений Perl как пехом до Берлина. :)

ksa 01.11.2016 14:48

Цитата:

Сообщение от laimas
Да и не нужно этого, проще удалить непотребное, оставив нужное

Ты спец - тебе видней...

snovapavel 01.11.2016 16:30

laimas,

Здравствуйте, мне не надо удалить, мне нужно, если это не блок див, то обернуть параграф тегом p, чтобы вышло так:

Было:

<div>Lorem ipsum.</div>

<div>Lorem</div> ipsum.

Lorem ipsum.

<li>Lorem ipsum.</li>

<div><span>Lorem ipsum.</span></div>


Стало:

<div>Lorem ipsum.</div>

<p><div>Lorem</div> ipsum.</p>

<p>Lorem ipsum.</p>

<p><li>Lorem ipsum.</li></p>

<div><span>Lorem ipsum.</span></div>

laimas 01.11.2016 18:24

Цитата:

Сообщение от snovapavel
обернуть параграф тегом p

Нужно просто возвратиться к предыдущей теме.


Часовой пояс GMT +3, время: 02:58.