Я работаю над веб-сайтом, управляемым базой данных. Названия большинства страниц являются именами наших партнеров и обслуживаются из базы данных с использованием php.
Например, одна страница может называться «Experian». Проблема в том, что некоторые значения для имен партнеров не работают, потому что это такие значения, как
$partnername22 = Discover<sup>tm</sup> Magazine
Я не могу использовать это для заголовка, потому что верхний индекс не может отображаться в заголовке, и я не могу изменить значение, потому что от него зависит многое другое. Есть ли уловка, которую я могу использовать, чтобы заставить браузер игнорировать надстрочные теги, если они есть в заголовке?






Не 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.
Круто, спасибо за разъяснения. Я не понимал, что вы там пытались сделать. Ваше здоровье.
Было бы очень просто (и, вероятно, целесообразно) использовать команду 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, bryan означает, что $ partnername22 == $ title. Он изменил формулировку в своем сообщении, чтобы было понятнее, что вы редактируете заголовок веб-страницы, а не имя партнера.
Для:
<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.
<title><?PHP echo str_replace('<sup>tm</sup>', '™', $offer22name); ?> is a magazine</title>
Или, что безопаснее:
<title><?PHP echo strip_tags(str_replace('<sup>tm</sup>', '™', $offer22name)); ?> is a magazine</title>
Или поймать больше случаев (точно не уверен в этом):
<title><?PHP echo strip_tags(preg_replace('/<sup.*?>\s+[Tt][Mm]\s*</(sup|)>', '™', $offer22name)); ?> is a magazine</title>
Вы можете заменить '™' на '™', '™' или «™», если хотите (но убедитесь, что кодировки совпадают с последним), в зависимости от ситуации.
Как насчет простого приема CSS?
h2.title sub, h2.title sup { vertical-align: baseline; font-size:100%; }
Вы можете использовать кодировку символов вместо тега, например ™, ™
В ответ Брайану (я не могу ответить на него из-за отсутствия баллов) я действительно имел в виду включить параны, чтобы в результате было что-то отличительное от текста. Но косые черты следует убрать. Результат выглядит так: Discover (tm) Magazine. Было бы неправильно, если бы это было: Discovertm Magazine.