0 / 0 / 0
Регистрация: 05.08.2024
Сообщений: 25

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

01.11.2024, 16:53. Показов 1253. Ответов 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
1295 / 1273 / 190
Регистрация: 21.01.2024
Сообщений: 5,896
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
3848 / 1723 / 431
Регистрация: 14.03.2022
Сообщений: 4,380
02.11.2024, 10:26
Цитата Сообщение от voraa Посмотреть сообщение
Скрипт немного переделал
Я предложил бы еще, перед проходом по нодам, вычислить "что искать" и "на что менять"...
0
0 / 0 / 0
Регистрация: 05.08.2024
Сообщений: 25
02.11.2024, 10:45  [ТС]
voraa, Работает.
Красивое решение.
0
 Аватар для voraa
1295 / 1273 / 190
Регистрация: 21.01.2024
Сообщений: 5,896
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
3848 / 1723 / 431
Регистрация: 14.03.2022
Сообщений: 4,380
02.11.2024, 14:06
voraa, можно еще саму регулярку "собрать" по принципу слово|слово|...|слово и жахнуть заменой один раз.
0
 Аватар для voraa
1295 / 1273 / 190
Регистрация: 21.01.2024
Сообщений: 5,896
02.11.2024, 16:42
Цитата Сообщение от krvsa Посмотреть сообщение
по принципу слово|слово|...|слово и жахнуть заменой один раз.
Не соображу как? Покажи.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3848 / 1723 / 431
Регистрация: 14.03.2022
Сообщений: 4,380
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
1295 / 1273 / 190
Регистрация: 21.01.2024
Сообщений: 5,896
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
1295 / 1273 / 190
Регистрация: 21.01.2024
Сообщений: 5,896
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru