Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2016, 12:18
Аспирант
Отправить личное сообщение для snovapavel Посмотреть профиль Найти все сообщения от snovapavel
 
Регистрация: 08.03.2015
Сообщений: 78

Как определить расположение элемента на 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
  }

}
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2016, 14:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от snovapavel
определить находится ли тег <p>...</p> внутри <div>...</div> или <blockquote>...</blockquote>
Он что всего один в $content? И почему <p></p> в <div></div> - параграф пустой и прописано без пробелов и прочего в тегах?
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2016, 18:20
Аспирант
Отправить личное сообщение для snovapavel Посмотреть профиль Найти все сообщения от snovapavel
 
Регистрация: 08.03.2015
Сообщений: 78

Здравствуйте!

Да это только для примера... Конечно их может быть множество. Но перебираем-то мы их по одному и проверяем каждый.
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2016, 19:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ничего вы не перебираете, просто будет дан ответ о наличии совпадений, а что в чем неизвестно. Проверяйте, изменяя текст:

$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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить, откуда вызвано модальное окно? mbp64 Элементы интерфейса 27 05.07.2016 15:08
Как определить индекс элемента jeysmook jQuery 2 09.11.2012 21:03
Как определить активное окно/вкладку? Chameleon Events/DOM/Window 5 19.03.2012 08:59
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
как определить позицию элемента относительно окна scuter Events/DOM/Window 5 07.05.2008 18:47