Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 05.08.2024
Сообщений: 25

Скрипт цензурирования контента

01.11.2024, 16:53. Показов 1191. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел на просторах скрипт,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var massiv = ["яблочный пирог","соус_острый_1","яблоки_красные","соус_острый_8"];
 
function findPartial(a, s)
{
  var zz = []
  for( var i = 0; i < a.length; ++i )
    if( a[i].indexOf(s) >= 0 )
      zz.push(i)      
  return zz
}
 
alert( findPartial( massiv, "соус_острый" ) )
Хотелось бы адаптировать таким образом, чтобы слово контенте страницы html, при вхождении в элемент массива заменялось по принципу первая и последняя буква остается, остальное заменяется "звездочками", "*".
Знаний не хватает, учусь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2024, 16:53
Ответы с готовыми решениями:

Не срабатывает скрипт тянущегося контента в Firefox
Доброго дня вам форумчане, пытаюсь разобраться со скриптом который на моём сайте растягивает виджеты по всей высоте экрана. Сам...

Рабочий скрипт динамического контента. Не работает в браузере
Доброго времени суток друзья. Сразу перейду к проблеме. Долго искал скрипт который будет выполнять роль динамического контента. То есть...

Не срабатывает скрипт после динамической генерации контента.
Всем добрый вечер , пишу сайт с использованием jQuery и ajax , это для меня новое постепенно изучаю и столкнулся с такой проблемой...

30
 Аватар для voraa
1234 / 1126 / 175
Регистрация: 21.01.2024
Сообщений: 5,129
02.11.2024, 10:10
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DVBZ Посмотреть сообщение
Скрипт пробовал, заменяются буквы, соответствующие вхождению подстроки, слово, если длиннее , остальные буквы не заменяются.
Не понял. Пример модно, что не заменяется, что заменяется.
Вот тестовый пример. Скрипт немного переделал с учетом того, что в тексте могут быть большие и малые буквы.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE html>
<html>
<head>
    <style>
        div {
            position:relative;
            width: 600px;
            font-size: 1.2rem;
        }
    </style>
</head>
<body>
<div>
<h2>Lorem ipsum odor amet, consectetuer adipiscing elit.</h2> 
<p>
Aliquet proin rutrum cursus habitant aptent fringilla est eleifend nullam. 
Taciti luctus tellus fames turpis sagittis semper pharetra conubia. 
Cursus justo rhoncus potenti; ut pulvinar volutpat non. Rhoncus magna ut id commodo phasellus. 
Nulla fames proin torquent tincidunt rhoncus ornare. 
<i>Dis lorem class tristique rutrum erat elit sem conubia eu.</i>
 Ultrices cras purus malesuada ultricies parturient curabitur neque dignissim nisl.
<p>
</div>
<div>
<p>
Condimentum feugiat ultrices aenean neque lectus augue mauris consequat. 
Per convallis parturient cras; nisl lectus cubilia dapibus. 
Senectus fusce torquent senectus arcu venenatis nascetur facilisi. 
Mauris tristique elementum ante rhoncus cubilia donec nascetur sed. 
Ex nullam fermentum imperdiet tincidunt elit parturient. Neque netus fames eros et adipiscing. 
Est tristique ridiculus tincidunt habitant vehicula mattis. 
Euismod rhoncus pulvinar porttitor morbi duis ultrices mollis eros torquent. 
Tortor dapibus lorem mollis in
</p>
<p>
Lacinia erat finibus; a ullamcorper fames tortor maximus ipsum. 
Massa malesuada dapibus gravida tortor at posuere dictum. 
Pulvinar quam tempus natoque odio nulla gravida massa. 
Varius dui vulputate sociosqu vulputate urna arcu eget. 
Taciti dolor tellus felis leo placerat ullamcorper fringilla fames netus. 
Praesent erat aenean nunc ridiculus semper urna luctus congue.
</p>
<p>
Lorem ipsum odor amet, consectetuer adipiscing elit. 
Aliquet proin rutrum cursus habitant aptent fringilla est eleifend nullam. 
Taciti luctus tellus fames turpis sagittis semper pharetra conubia. 
Cursus justo rhoncus potenti; ut pulvinar volutpat non. Rhoncus magna ut id commodo phasellus. 
Nulla fames proin torquent tincidunt rhoncus ornare. 
Dis lorem class tristique rutrum erat elit sem conubia eu. 
Ultrices cras purus malesuada ultricies parturient curabitur neque dignissim nisl.
</p>
</div>
 
<script>
    const stopWords = ["ipsum", "lorem", "consectetuer"];
    const walker = document.createTreeWalker(document.body,  NodeFilter.SHOW_TEXT);
    let text;
    while (text = walker.nextNode()) {
        let data = text.data;
        for (const word of stopWords) {
            const rexstr = `(${word[0]})(${word.slice(1,-1)})(${word.at(-1)})`;
            const rexword = new RegExp(rexstr, "ig");
            data = data.replaceAll(rexword, (_, p1, p2, p3)=> p1 + '*'.repeat(p2.length) + p3);
        }
        text.data = data;
    }
    </script>
</body>
</html>
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3806 / 1643 / 428
Регистрация: 14.03.2022
Сообщений: 4,087
02.11.2024, 10:26
Цитата Сообщение от voraa Посмотреть сообщение
Скрипт немного переделал
Я предложил бы еще, перед проходом по нодам, вычислить "что искать" и "на что менять"...
0
0 / 0 / 0
Регистрация: 05.08.2024
Сообщений: 25
02.11.2024, 10:45  [ТС]
voraa, Работает.
Красивое решение.
0
 Аватар для voraa
1234 / 1126 / 175
Регистрация: 21.01.2024
Сообщений: 5,129
02.11.2024, 13:12
Цитата Сообщение от krvsa Посмотреть сообщение
перед проходом по нодам, вычислить "что искать" и "на что менять"
Ну да, тут есть, что оптимизировать.

Такой тогда скрипт можно
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    const stopWords = ["ipsum", "lorem", "consectetuer"];
 
    const walker = document.createTreeWalker(document.body,  NodeFilter.SHOW_TEXT);
 
    const rexwords = stopWords.map (word => {
        const rexstr = `(${word[0]})(${word.slice(1,-1)})(${word.at(-1)})`;
        return new RegExp(rexstr, "ig");
    });
 
    const funrepl = (_, p1, p2, p3)=> p1 + '*'.repeat(p2.length) + p3;
    
    let text;
    while (text = walker.nextNode()) {
        let data = text.data;
        for (const rexword of rexwords) {
             data = data.replaceAll(rexword, funrepl);
        }
        text.data = data;
    }
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3806 / 1643 / 428
Регистрация: 14.03.2022
Сообщений: 4,087
02.11.2024, 14:06
voraa, можно еще саму регулярку "собрать" по принципу слово|слово|...|слово и жахнуть заменой один раз.
0
 Аватар для voraa
1234 / 1126 / 175
Регистрация: 21.01.2024
Сообщений: 5,129
02.11.2024, 16:42
Цитата Сообщение от krvsa Посмотреть сообщение
по принципу слово|слово|...|слово и жахнуть заменой один раз.
Не соображу как? Покажи.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3806 / 1643 / 428
Регистрация: 14.03.2022
Сообщений: 4,087
02.11.2024, 22:03
Цитата Сообщение от voraa Посмотреть сообщение
Покажи
Например вот так...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
let t = `Condimentum feugiat ultrices aenean neque lectus augue mauris consequat. 
Per convallis parturient cras; nisl lectus cubilia dapibus. 
Senectus fusce torquent senectus arcu venenatis nascetur facilisi. 
Mauris tristique elementum ante rhoncus cubilia donec nascetur sed. 
Ex nullam fermentum imperdiet tincidunt elit parturient. Neque netus fames eros et adipiscing. 
Est tristique ridiculus tincidunt habitant vehicula mattis. 
Euismod rhoncus pulvinar porttitor morbi duis ultrices mollis eros torquent. 
Tortor dapibus lorem mollis in`
const stopWords = ["lectus", "lorem", "Condimentum"]
 
const r = new RegExp(stopWords.join('|'), "ig")
t = t.replace(r, v => v[0] + '*'.repeat(v.length - 2) + v.at(-1))
console.log(t)
1
 Аватар для voraa
1234 / 1126 / 175
Регистрация: 21.01.2024
Сообщений: 5,129
02.11.2024, 22:42
Цитата Сообщение от krvsa Посмотреть сообщение
Например вот так...
Не, это не то.
Слова ведь в тексте могут быть набраны по разному. Например первая буква маленькая, или первая буква большая, или все буквы большие. Мне кажется, что lorem должно заменяться на l***m, а Lorem на L***m, а LOREM на L***M.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.11.2024, 02:07
Цитата Сообщение от voraa Посмотреть сообщение
Мне кажется, что lorem должно заменяться на l***m, а Lorem на L***m, а LOREM на L***M.
Так так и работает.

JavaScript
1
"LOREM, lorem, LoRem".replace(r, v => v[0] + '*'.repeat(v.length - 2) + v.at(-1)); // L***M, l***m, L***m
0
 Аватар для voraa
1234 / 1126 / 175
Регистрация: 21.01.2024
Сообщений: 5,129
03.11.2024, 09:08
Цитата Сообщение от Eva Rosalene Посмотреть сообщение
Так так и работает.
А, даю. Верно.
0
0 / 0 / 0
Регистрация: 05.08.2024
Сообщений: 25
04.11.2024, 14:54  [ТС]
Не замещает.
Можнo вариант в HTML коде?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2024, 14:54
Помогаю со студенческими работами здесь

Как заставить jquery-скрипт работать при перезагрузке контента AJAX-ом?
Добрый день! Вопрос следующий. У меня есть скрипт JQuery, который добавляет определенный код после каждого 4-го div таким вот образом:. ...

Скрипт проверки уникальности контента
Кто может подсказать где скачать если такой скрипт есть. Нужно проверять контент на уникальность но проверку делать в базе данных. Это...

После обновления контента <div> через AJAX перестают работать события данного контента
Здравствуйте. Есть проблемка такого характера. На сайте выбирается студент и в поля ввода читаются его данные. Можно также добавить...

Подгрузка контента из подгруженного контента в тот же блок :)
Здравствуйте! Подгружаю в блок контент из которого по нажатию на кнопку должна происходить подгрузка другого контента в этот же блок. ...

Подгрузка контента и экземпляр контента
Объясните, пожалуйста _contentLoaded это переменная отвечающая за подгрузку контента. но 1)Как весь контент можно обозначить одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru