2014-10-08 3 views
0

Может ли кто-нибудь предложить лучший способ добавить класс CSS к элементу HTML с помощью PHP?Добавить класс CSS в HTML-тег с PHP regex

Мне нужно изменить строку, которая является содержанием сообщения WordPress. Если столбец имеет элемент фигуры в начале, я хочу извлечь тег открытия <figure> элемента и добавить к нему класс «большого изображения» CSS, прежде чем возвращать его на место. Тег может иметь или не иметь атрибут класса (со значением в одинарных или двойных кавычках), и он может иметь другие атрибуты в разных порядках, поэтому я не могу просто использовать preg_replace: мне нужно вытащить тег и запустить его через некоторую логику с условиями, позволяющими использовать эти возможности.

Например, я мог бы иметь:

<figure id="foo" data-track="bar" class="fig">

или

<figure class='fig bah' id='foo' data-track='bar'>

или

<figure data-track="bar">

или просто

<figure>

Мне нужно только, чтобы сделать это, если эта цифра является первой вещью в содержании - если есть цифра где-нибудь еще, я его игнорировать. Я дошел до этого первого состояния

if (strpos(trim($content), '<figure') == 0) { 

} 

, но я немного озадачен тем, как его принять дальше. Мне кажется, мне нужна функция PHP, которая будет использовать регулярное выражение, чтобы найти первый <figure> и разделить строку $ content в конце его открывающего тега, возвращая обе половины. Но, похоже, не существует такой функции - preg_split возвращает строку, деленную по шаблону, но не сам шаблон. Я был бы признателен за любой совет!

Edit = = = = = = = =

В ответ на вопрос Amit здесь пример желаемого ввода/вывода

<figure> в <figure class="big-image">

<figure class='boo'> в <figure class='big-image boo'>

<figure id="bar" class="boo"> до <figure id="bar" class="big-image boo">

+0

Какой ожидается выход, для ввода? –

+0

Амит, я добавлю к моему вопросу. –

+1

Лучшим способом является использование парсера dom –

ответ

0

Я сейчас не в системе, поэтому не могу написать код, но просто следуйте простой процедуре.

  1. Получать содержание сообщения в переменной, используя «the_content» или что угодно.
  2. проверьте, входят ли "<figure".
  3. Прочитайте строку, начинающуюся с "<figure" до первого ">" char по char и сохраняйте их в другой переменной, давайте скажем $ remove_it.
  4. Теперь использование $ remove_it preg заменит содержание сообщения.
  5. Результирующая переменная вернет требуемый результат.

Если у вас есть какие-либо другие вопросы, свяжитесь со мной непосредственно в новом блоге http://www.sourabhmodi.in/. Я буду рад помочь вам.

Смежные вопросы