Стилизация текста, полученного с помощью file_get_content

0

У меня длинный текст извлекается с помощью file_get_contents(). Текстовый файл содержит информацию в следующем формате:

---
Description:
---
Some description here, with long text sentences.

---
Part 1
---
Information with part 1 in this section followed by path 2.

Теперь я хочу стилизовать информацию между ---, например, я хотел бы сделать "описание" и "часть 1" полужирным шрифтом и отобразить остальное в виде простого текста.

Я думаю, что это может быть достигнуто с помощью preg_match. Но я хотел бы знать, можно ли использовать любой другой метод.

  • 0
    Может ли текст между --- парами содержать дефисы?
  • 0
    @faintsignal - да
Теги:
parsing

3 ответа

2
Лучший ответ

Следующее должно работать:

preg_replace('/---(.*?)---/s', '<strong>$1</strong>', $text);

Выражение фиксирует что-либо между ---- парами. $1 в шаблоне замены указывает на обратную связь - в нем содержится то, что было сопоставлено первой группой захвата. Модификатор s делает . также соответствуют новостям.


Если вы также хотите удалить пробелы, вы можете сделать это:

preg_replace('/---\s*(.*?)\s*---/s', '<strong>$1</strong>', $text);

Если есть вероятность того, что --- пар происходит внутри текста, то вы можете использовать следующий шаблон вместо:

preg_replace('/---(?=\s)(\s)([^\r\n]+)(\s)---/s','<strong>$2</strong>$3', $text);

Демо-версия Regex101

  • 0
    Это должно работать для всех разумных возможных примеров, но если у вас есть три смежных дефиса внутри любого из «заголовков», это разобьет этот заголовок.
  • 0
    @faintsignal: это исправлено сейчас :)
0

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

echo preg_replace('/---(\r\n|\n|\r)([^\n\r]+)(\r\n|\n|\r)---/s', '<strong>$2</strong>$3', $text);

Например, предположим, что ваш текст:

---  
Descrip---tion:
---  
Some description here, with long text sentences.  

---  
Part 1  
---  
Information with part 1 in this section followed by path 2.  

Вышеупомянутый код заменит это на:

<strong>Descrip---tion:</strong>

Some description here, with long text sentences.

<strong>Part 1</strong>

Information with part 1 in this section followed by path 2.
  • 0
    Просто примечание: вам не нужно убегать - вне класса персонажа.
  • 0
    Да, это моя плохая привычка. Забрал их, спасибо.
0

Вы также можете использовать взрыв

$expl = explode("---",$yourtext);
echo '<b>'.$expl[0].'</b>'; //**Description:**
echo $expl[1]; //Some description here, with long text sentences.
echo '<b>'.$expl[2].'</b>'; //**Part 1**
echo $expl[3]; //Information with part 1 in this section followed by path 2.
  • 1
    Текст может быть довольно длинным и переменным. Жесткое кодирование не может быть лучшей идеей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню