Как определить расположение элемента на PHP?
Добрый день!
Не могу сообразить, помогите пожалуйста написать функцию на PHP, чтобы определить находится ли тег <p>...</p> внутри <div>...</div> или <blockquote>...</blockquote>. Без всяких DOM XML и прочего. Просто с помощью регулярных выражений. Пример:
// находим в тексте параграф
function( preg_match( "/<p></p>/m", $content ) ) {
// определяем, что он внутри div
if( preg_match( "/<div></div>/m", $content ) ) {
// Найденный тег параграфа находится внутри тега div
}
// определяем, что он внутри blockquote
else if( preg_match( "/<blockquote></blockquote>/m", $content ) ) {
// Найденный тег параграфа находится внутри тега blockquote
}
else {
// Найденный тег параграфа находится отдельно от div или blockquote
}
}
|
Цитата:
|
Здравствуйте!
Да это только для примера... Конечно их может быть множество. Но перебираем-то мы их по одному и проверяем каждый. |
Ничего вы не перебираете, просто будет дан ответ о наличии совпадений, а что в чем неизвестно. Проверяйте, изменяя текст:
$s = 'aasdf <div><p>dd
fghfg
dfgdf</p></div> jkfdf
aasdf <blockquote>
<p>dd
fghfg
dfgdf</p> </blockquote>jkfdf';
echo preg_match('/<div>.*?<p>.+<\/p>.*?<\/div>|<blockquote>.*?<p>.+<\/p>.*?<\/blockquote>/s', $s) ? 1 : 0;
Не понятна цель проверки (проверка корректности вложения, либо просто найти), но скорее лучше найти парные теги div и blockquote, а затем проверив в них наличие параграфа, тогда еще можно ответить на вопрос какой параграф во что вложен. Искать параграф в окружении тоже можно, но будет сложнее. И нужен модификатор s, так как в окружении могут быть и переводы строк, без модификатора m. |
| Часовой пояс GMT +3, время: 00:42. |