Игнорирование надстрочного индекса в тегах заголовков

Я работаю над веб-сайтом, управляемым базой данных. Названия большинства страниц являются именами наших партнеров и обслуживаются из базы данных с использованием php.

Например, одна страница может называться «Experian». Проблема в том, что некоторые значения для имен партнеров не работают, потому что это такие значения, как

  $partnername22 = Discover<sup>tm</sup> Magazine

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
3 621
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Не AFAIK, но если вы уже создаете сценарий для строки из БД, почему вы не можете записать одно и то же строковое регулярное выражение, заменяя теги (или пары тегов, если хотите) пустыми строками?

Одним словом, нет.

В идеале вы бы сделали $partnername22 = strip_tags('Discover<sup>tm</sup> Magazine'); (или что-то более интересное), но если вы не можете этого сделать, я боюсь, что вы застряли с решением Javascript.

Что-то вроде:

window.title = window.title.replace(/<sup.*?</sup>/, '');

Регулярное выражение в PHP, которое заменит <sup> text </sup> на (text):

$title = preg_replace('|<sup>(.*?)</sup>|', '\($1\)', $title);

Это было бы похоже на javascript.

В ответ Брайану (я не могу ответить на него из-за отсутствия баллов) я действительно имел в виду включить параны, чтобы в результате было что-то отличительное от текста. Но косые черты следует убрать. Результат выглядит так: Discover (tm) Magazine. Было бы неправильно, если бы это было: Discovertm Magazine.

Mike 17.12.2008 22:21

Круто, спасибо за разъяснения. Я не понимал, что вы там пытались сделать. Ваше здоровье.

bryan kennedy 17.12.2008 23:31

Было бы очень просто (и, вероятно, целесообразно) использовать команду PHP strip_tags () для удаления всего html из вашей строки перед публикацией его в качестве заголовка.

Майк, я думаю, ты имел в виду следующее:

$title = preg_replace('|<sup>(.*?)</sup>|', '$1', $title);

То, как вы это делали раньше, печатает несколько косых черт и скобок вокруг помеченного слова. Верно?

pg, вы также можете просто сделать

$title = preg_replace('|<sup>(.*?)</sup>|', '', $title);

если вы хотите полностью удалить надстрочную информацию из заголовка.

Я не понимаю, как здесь используется. Как мне использовать это значение $ title, чтобы удалить зашифрованный текст? теперь текст документа: <title> <? php echo $ offer22name?> это журнал </title> Где мне поместить значение $ title и что мне с ним делать, чтобы он убрал все в тегах ?

pg. 17.12.2008 22:04

@pg, bryan означает, что $ partnername22 == $ title. Он изменил формулировку в своем сообщении, чтобы было понятнее, что вы редактируете заголовок веб-страницы, а не имя партнера.

strager 17.12.2008 22:31
Ответ принят как подходящий

Для:

<title><?php echo $offer22name ?>is a magazine</title>

изменить на:

<title><?php echo preg_replace('|<sup>(.*?)</sup>|', '($1)', $offer22name) ?> is a magazine</title>

Но, как упомянул Брайан, в этом сценарии вам следует использовать PHP strip_tags (). Так:

<title><?php echo strip_tags($offer22name) ?> is a magazine</title>

Если вы пропустите другой комментарий, который я сделал, то используемое мной регулярное выражение приведет к: Discover (tm) Magazine.

Mike 17.12.2008 22:30
<title><?PHP echo str_replace('<sup>tm</sup>', '&trade;', $offer22name); ?> is a magazine</title>

Или, что безопаснее:

<title><?PHP echo strip_tags(str_replace('<sup>tm</sup>', '&trade;', $offer22name)); ?> is a magazine</title>

Или поймать больше случаев (точно не уверен в этом):

<title><?PHP echo strip_tags(preg_replace('/<sup.*?>\s+[Tt][Mm]\s*</(sup|)>', '&trade;', $offer22name)); ?> is a magazine</title>

Вы можете заменить '&trade;' на '&#8482;', '&#x2122;' или «™», если хотите (но убедитесь, что кодировки совпадают с последним), в зависимости от ситуации.

Как насчет простого приема CSS?

h2.title sub, h2.title sup { vertical-align: baseline; font-size:100%; }

Вы можете использовать кодировку символов вместо тега, например &trade;, &#153;

Другие вопросы по теме