Выбирать часть текста между символами

Я делаю blog.

Мое сомнение, давайте предполагать, что в параграфе статьи blog, я хочу, чтобы клались в полужирных шрифтах слова, которые между ":" например, "Было: одна: раз", который может делаться с javascript, но единственное, что я нашел по этому поводу, - ища в innerHTML специфическое слово и добавляя span со стилем.

Кто-то знает, как я могу делать, чтобы добавлять некие стили пунктуально к словам, которые находятся между особенными символами?

2
задан 07.09.2016, 18:33
3 ответа

... единственное, что я нашел по этому поводу, - ища в innerHTML специфическое слово и добавляя span со стилем.... Кто-то знает, как я могу делать, чтобы добавлять некие стили пунктуально к словам, которые находятся между особенными символами?

В html, не возможно менять стиль текстового блока, не дифференцируя этого с этикеткой.

Считай этот пример...

<p>Lorem Isup, el diablo is malissimo</p>

Себе не может менять стиль "дьявола" прямо, итак, весь текстовый блок ("Лорем Исуп, дьявол is malissimo") он использует тот же стиль.

То, что уже ты нашел, так это способ изменять пунктуальный стиль некоего текста.

// html
<p>Lorem Isup, <span class="bold">el diablo</span> is malissimo</p>

// css 
.bold { font-weight: bold; }

Из-за этого, ты можешь использовать нечто похожее: С регулярным expression, искать различные отметки и делать remplazo вручную. Также ты можешь использовать markdown стандарт используя какой-то книжный магазин, хорошо протестированный как например: https://github.com/evilstreak/markdown-js

// seleccionas lo que quieres modicar, en este caso 
// use <p> pero puedes usar querySelector para traer
// mas elementos. 
var range = document.getElementsByTagName("p");

for (var i = 0; i < range.length; i++) {
  var matched = range[i].textContent.match(/:(.+?):/g)
  if (matched) {
    matched.forEach(function(text) {
      var newtext = text.substring(1, text.length - 1);
      range[i].innerHTML = range[i].innerHTML.replace(text, '<span class="bold">' + newtext + '</span>');
    });
  }
}
.bold {
  font-weight: bold;
}
<p>Lorem Isup, :el diablo: is malissimo, :tu sabes:</p>
6
ответ дан 24.11.2019, 13:28

Ты можешь использовать что-то сходное с этим:

//texto = "Había :una: vez" simbolo = ":"
var cambiarTexto = function (texto, simbolo) { 
while (texto.indexOf(simbolo)>0) {
    var posicionInicial = texto.indexOf(simbolo);
    var posicionFinal = texto.indexOf(simbolo, posicionInicial+1);
    var textoEntreSimboloOriginal = texto.substring(posicionInicial, posicionFinal+1);
    var textoEntreSimbolo = texto.substring(posicionInicial+1, posicionFinal);
    texto = texto.split(textoEntreSimboloOriginal).join("<span class='miestilo'>" + textoEntreSimbolo + "</span>");
}
return texto;// Resultado = Había <span class='miestilo'>una</span> vez   
}

потом единственный tendrГ-эксперт, который должен изменять элемент, у которого есть этот текст, который ты хочешь изменить. например:

var remplazoGeneral = function () {

document.body.innerHTML = cambiarTexto(document.body.innerHTML, ":");
}
0
ответ дан 24.11.2019, 13:28

прежде всего, спасибо за комментарии, он хотел сказать им, что я нашел способ, что я думаю, что (по крайней мере для меня) он более легкий, с PHP с BBCode.

PHP

<?php

  if(isset($_POST['texto'])){
    $texto = $_POST['texto'];
    $texto = stripslashes($texto);
    $texto = htmlspecialchars($texto);
    $texto = nl2br($texto);

    $texto = preg_replace('#\:(.+)\:#isU', '<b>$1</b>', $texto);

    echo $texto;
  }
?>

Это код, который я использую, в 'index.php'. Я объясняю (как я могу) код.

Функция stripslashes () снимает перевернутые бруски цепи, в этом случае $texto, чтобы не иметь конфликты после с 'preg_replace ()'.

Функция htmlspecialchars () убегает caractéres epeciales в организациях html, например, caractér и это конвертирует в &amp.

Функция nl2br () похожая в htmlspecialchars (), функция прочитала бы себе 'Ene ele to be ere' jaja, а именно, каким-то образом \n-> br, из-за того, что эти три функции, что они делают, состоит в том, чтобы переводить вошедший string, в HTML.

Сейчас, самая важная, preg_replace ():

Эта функция, ищи регулярное выражение (первый параметр) и он заменяет их желанным (второй параметр), объяснил немного первый.

'#\:(.+)\:#isU'

Я буду объяснять (я повторяю, как смог) первый параметр, который является главным файлом, этот определяет между них #. Потом, он показывается между какими символами должно быть выражение, которое нужно заменять, в этом случае они те ":", и убегает caractér с перевернутым бруском. В конце концов, серия символов (. +), из-за которого я понимаю, он был бы интерпретирован как "любой palabra/s", из-за того, что "Вся цепь, которая между: будешь заменен вторым параметром. И мы заканчиваем эту часть кода с #isU, который я не буду объяснять, потому что действительно не, я не хочу дать ошибочную информацию jaja.

Сейчас второй параметр, 'На который он идет заменять первого'. Поскольку они будут видеть, в моем коде utilizé следующее:

<b>$1</b>

Поскольку они могут видеть, где пошло бы слово, которое мы хотим, чтобы он появился в negríta, есть 1$, главным образом это переменная, которая представляет ее первый регулярное вошедшее выражение.

Это дает нам повод для tercér параметр, цепь, которую мы использовали, которая в этом случае, была $texto. Я не могу объяснять многий из третьего параметра, потому что действительно, я не уверен, как оно функционирует, если кто-то хочет внести что-то еще, его втречен с радостью.

И в HTML, формуляр - следующий:

HTML

<form action='index.php' method='POST'>
  <textarea name='texto'></textarea>
  <input type='submit' value='Enviar'>
</form>

Нужно прояснять что ямс ='texto' - стоимость, которая посылает себе в $ _POST ['текст'].

Я прошу у них иметь по отношению ко мне благочестие относительно моего объяснения, я захотел сказать это само ясный, я - немного любитель с этим, и особенно, BBCode, я это узнал 30 минут назад. Если кто-то видит какую-то ошибку, в котором мастер на все руки, я прошу у него пожалуйста объяснять это себе, все учимся на наших ошибках, и я особенно, в доказательство и ошибку!.

Я надеюсь, что он подает его в кому-то, и большое спасибо denuevo в тех, которые ответили мне. Привет!

0
ответ дан 24.11.2019, 13:28
  • 1
    Не надо убегать :, pod и # 233; s использовать '#:(.+):#isU'... Этот soluci и # 243; n - точно то же самое, что и он предложил тебе @rnd в Вашем ответе используя язык сценариев JavaScript вместо PHP (и обрати внимание, что ты приклеил этикетку на туз и # 237; вопрос - ты не использовал [php]) –  Mariano 08.09.2016, 06:06

Теги

Похожие вопросы