Привет всем Есть wordpress(написан на пхп) и нужно в HTML-текст (из базы данных) вставить строку при этом не попасть в середину служебной информации тега ( < a сюда>, < img сюда>, style=" сюда") Но тем не менее я все же не смог реализовать нормальный вариант =( Ведь Я так и не знаю сколько символов я откидываю с помощью strip_tags
| Код | <?php /* берем исходный текст из базы данных (в wordpress значение => the_content() ) этот текст избавляем от html-тегов, теперь отступаем на $pos символов и выбираем один символ $test_letter в исходном тексте отступаем на $pos символов и ищем этот символ ($test_letter) оперделяем его позициию, куда и добавляем текст */ function adv_add($textToAdd,$pos,$text){ $nText=mb_strlen($text); if($pos==0) $pos++; $test_letter=mb_substr(trim(strip_tags(html_entity_decode($text))),($pos-1),1);
while ($pos<$nText){ if( mb_strrpos(mb_substr($text,($pos-10),3),$test_letter )!=false ){ return mb_substr($text,0,$pos).$textToAdd.mb_substr($text,$pos,($nText-$pos)); } $pos++; } }
function contentAdd($text){ $nText=mb_strlen($text);// длина текста
if(($nText> 500) &&is_single()){ $textToAdd = <<<HTML <div style="float:right;margin:0 0 10px 15px;">This</div> HTML; $textToAdd2 = <<<HTML <div style="width:100%;text-align: center;">This 2</div> HTML;
$text1=adv_add($textToAdd,$nu,$text); $text2=adv_add($textToAdd2,$nText/2,$text1);
return "".$text2; }
// по умолчанию возвращаем исходный текст return $text; } add_filter('the_content', 'contentAdd', -10); ?>
|
|