Intereting Posts
Элемент массива MongoDB из коллекции PHP DateTime :: изменить время добавления и вычитания Чтение данных из текстового файла и формирование таблицы с использованием php Неустранимая ошибка: класс «FOS \ Rest \ Util \ Codes» не найден Чтение данных MIME с использованием PHP Zend Framework: получение объекта запроса в бутстрапе Создание ZIP-файлов с PHP + Apache на лету на высокой скорости? Каков наилучший способ включить таблицу стилей для определенной страницы? запретить прямой доступ к php-файлу, набрав ссылку в URL-адресе Я хочу разбиение на страницы на странице параметров плагина wordpress? GEOIP и получение IP-адреса компьютера? Как читать информацию из .3gp и .mp4 с помощью ffmpeg-php? Проблемы с LOCAL INFILE после переключения на mysqli Каков наилучший способ защиты паролем папки / страницы с использованием php без db или имени пользователя Могу ли я использовать try-catch-finally вот так?

Как я могу использовать split, но пропустить html / javascript / php и другие внутренние теги?

Мой код вставляет содержимое HTML после X числа слов в блоге. Код работает, но есть проблема: он разделяет все, что он находит на своем пути, даже javascript, html, что угодно.

if (index == 2) подсчитывает первые два слова кода, а затем вставляет HTML (в этом случае изображение) после этих слов, но не делает различий в html или чистом тексте. Я нашел здесь тему: я должен использовать что-то вроде этого:

 result = subject.match(/<\s*(\w+\b)(?:(?!<\s*\/\s*\1\b)[\s\S])*<\s*\/\s*\1\s*>|\S+/g); 

Но я не знаю, как его реализовать.

В принципе, мне нужен код для подсчета каждого слова, но пропустите любые теги, такие как <\ " " ? --> <!-- /> <\ " " ? --> <!-- />

Сценарий: https://jsfiddle.net/kvenmL07/

HTML:

  <div style="width:450px; margin-left:auto; margin-right:auto" class="newsitem_text"> <div style="width:350px; margin-left:auto; margin-right:auto"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec pellentesque urna eu pulvinar maximus. Sed elit nunc, vestibulum ut eros vitae, pellentesque rhoncus ipsum. In et metus non diam porttitor maximus iaculis nec lectus. Quisque sodales scelerisque auctor. Nam rutrum venenatis eros, eu condimentum erat placerat ut. Pellentesque sed tempus sem, eu viverra ipsum. Vestibulum nec turpis convallis, dapibus massa vitae, posuere mauris. Suspendisse mattis tincidunt lorem. Aliquam erat volutpat. Nullam at tincidunt erat, maximus laoreet ipsum. Quisque nunc neque, semper tincidunt placerat eget, blandit a ante. Suspendisse pulvinar, velit eu ultrices pulvinar, lacus sapien tincidunt ipsum, eget sollicitudin mauris eros molestie ex. Etiam quis orci dui. Phasellus vestibulum mollis molestie. Nam condimentum ornare nisl, sed finibus risus tempus vel. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum eget ullamcorper lorem. Aliquam mollis elit in sem dapibus dapibus. Proin vel massa a arcu dictum tincidunt in ut ante. Sed feugiat tempus dictum. Praesent in leo ullamcorper, sodales turpis et, vehicula tellus. Duis pellentesque dui ac turpis tristique imperdiet. Sed sed orci lectus. Suspendisse non egestas sem, sed tincidunt sem. Etiam laoreet dui sem. Mauris hendrerit massa tempus, euismod arcu sit amet, eleifend quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus id fringilla mauris. Cras dapibus non lacus at finibus. Nullam vitae sagittis neque. Mauris libero velit, interdum non vehicula non, lacinia non augue. Maecenas elementum lacinia interdum. Morbi eget mollis nisl. Integer accumsan condimentum tellus, lacinia pellentesque urna volutpat a. Nullam semper sem et erat commodo sollicitudin. Proin rhoncus felis eu aliquam venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla pretium velit eu molestie condimentum. Vestibulum vitae velit mi. Integer nec leo quam. Nam pulvinar ligula congue consectetur tristique. Donec placerat faucibus diam sit amet fermentum. Ut id pellentesque risus. Nunc lacus orci, rhoncus ut risus sed, mattis posuere tellus. Nulla pellentesque eros sed neque consectetur dictum.</div></div> 

Jquery:

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript"> jQuery(function($) { var wordList = $(".newsitem_text").html().split(' '); var newHtml = ' '; $.each(wordList, function(index, word){ newHtml += ' ' + word; if (index == 2) { newHtml += '<img src="http://img.ruphp.com/javascript/adolphe-saxs-201st-birthday-6443879796572160.2-res.png" />' } }) ; $(".newsitem_text").html(newHtml); }); </script> 

Если вы используете .text () вместо .html (), он не будет показывать какие-либо теги .. например:

  <div id="test" class="test2"> <span>this is a test</span> </div> 

тогда

 var mytext = $("#test").text(); 

mytext будет равен «это тест»;

 word = word.replace(/<\/?[\w#"'-=:; {},.\r\n]+\/?>/g, '\n'); word = word.replace(/&nbsp;/gi, ''); 

возможно, вам нужна только первая строка. добавьте это после $ each. line и до newHtml + = line.

—————– редактировать

Вероятно, я впервые понял его. Попробуйте удалить теги перед разбиением ()

 jQuery(function($) { //var wordList = $(".newsitem_text").html().split(' '); var wordList = $(".newsitem_text").html(); wordList = wordList.replace(/<\/?[\w#"'-=:; {},.\r\n]+\/?>/g, '\n'); wordList = wordList.split(' ') var newHtml = ' '; $.each(wordList, function(index, word){ newHtml += ' ' + word; if (index == 2) { newHtml += '<img src="http://img.ruphp.com/javascript/adolphe-saxs-201st-birthday-6443879796572160.2-res.png" />' } }) ; $(".newsitem_text").html(newHtml); });