Я использую следующее preg_match
:
preg_match( '!<div class="thumblock ">(.*)</div>!si' , wp_gdsr_render_article_thumbs(0, false, "", 0, "", false) , $n );
$thumbs_string = strip_tags( $n[1] );
Чтобы извлечь число между тегами span:
<div class="thumblock ">
<span class="rating-result">
<div id="gdsr_thumb_text_12_a" class="gdt-size-20 voted inactive gdthumbtext">+1</div>
</span>
<div class="ratingtext ">
<div class="raterclear"></div>
</div>
(в примере выше, результатом является строка: "+1")
Итак, я попытался преобразовать его в целое число с помощью этого:
$thumbs_number = (int)$thumbs_string;
который используется в этой функции:
function get_rating_class($thumbs_number) {
if ($thumbs_number < 0) return ' bad';
if ($thumbs_number < 2) return ' average';
if ($thumbs_number < 4) return ' good';
return ' excellent';
}
function rating_class($thumbs_number) {
echo get_rating_class($thumbs_number);
}
для вывода класса div:
<div class="topic-like-count<?php rating_class($thumbs_number); ?>">
Я даже сделал var_dump()
:
<h2><?php var_dump($thumbs_string); ?></h2>
<h2><?php var_dump($thumbs_number); ?></h2>
и результаты были:
string(2) "+1"
и int(1)
соответственно (я прямо скопировал / вставил их сюда).
Но класс div не выводится.
Есть предложения, чтобы это исправить?
EDIT:
Класс действительно выводится в исходном коде HTML, но он не оказывает никакого влияния (и моя таблица стилей не кэшируется). У меня есть другая версия функции, которая не добавляет дополнительный div вокруг тегов span, и она работает, но, к сожалению, мне нужен этот div.