Помогите составить регулярное выражение
Добрый день!
Подскажите, пожалуйста, как с помощью регулярных выражений PHP получить строку, у которой в начале и в конце (ВАЖНО!) строки НЕ стоит тег div (не обрамляет её (строку))? Пример: // эту строку не надо <div>Lorem ipsum.</div> // эту строку надо <div>Lorem</div> ipsum. // эту строку надо Lorem ipsum. // и эту строку надо <li>Lorem ipsum.</li> // эту не надо <div><span>Lorem ipsum.</span></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]))? 'не брать': 'брать'));
};
|
ksa,
это не РНР. :) |
Цитата:
|
Цитата:
http://www.skillz.ru/dev/php/article...chaynikov.html Различий не так уж и много... :D |
Цитата:
Да и не нужно этого, проще удалить непотребное, оставив нужное, и если каждая строка не имеет переносов, то просто:
$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,
Здравствуйте, мне не надо удалить, мне нужно, если это не блок див, то обернуть параграф тегом 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> |
Цитата:
|
$subject = "<div>Lorem ipsum.</div> <div>Lorem</div> ipsum. Lorem ipsum. <li>Lorem ipsum.</li> <div><span>Lorem ipsum.</span></div>"; $pattern = "/(*ANYCRLF)^<div>.*(?<!<\/div>)$|^(?!<div>).+$/imu"; $replacement = "<p>$0</p>"; echo preg_replace( $pattern , $replacement , $subject ); Но вообще регулярками с html работать - моветон. |
Aetae,
это не соответствует требуемому, а если строки будут иметь переносы (что неизвестно из условия), тем более не будет работать. |
laimas, соответствует последнему комменту. Впрочем если строки должны содержать переносы - модификация минимальна:
в $subject подаётся массив нужных строк и в регулярке меняется модификатор m на s. |
Цитата:
Цитата:
Учитывая, что латиница en в utf также представлена одним байтом, а ищем именно латиницу (любой символ вне тега не важен), модификатора u не требуется, замена "Lorem ipsum" на "Русский текст" без этого модификатора никак не скажется на результате. |
| Часовой пояс GMT +3, время: 15:20. |