Как определить расположение элемента на 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, время: 23:28. |