2

我在一个数据库驱动的网站上工作。大多数页面的标题是我们拥有的合作伙伴的名称,并使用 php 从数据库提供。

例如,一页可能被称为“Experian”。问题是合作伙伴名称的某些值不起作用,因为这些值类似于

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

我不能将它用于标题,因为上标不能出现在标题中,而且我不能更改值,因为许多其他事情都依赖于它。如果标题中有上标标签,我可以采取什么技巧让浏览器忽略它们?

4

9 回答 9

2

在将其作为标题发布之前,使用 PHP 的 strip_tags() 命令从字符串中删除所有 html 将非常简单(并且可能是可取的)。

于 2008-12-17T18:12:43.413 回答
2

为了:

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

改成:

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

但是就像 Bryan 提到的,在这种情况下您应该使用 PHP 的 strip_tags()。所以:

<title><?php echo strip_tags($offer22name) ?> is a magazine</title>
于 2008-12-17T19:26:01.550 回答
2
<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;'或 '™' 替换(但请确保编码与最后一个匹配),具体取决于具体情况。

于 2008-12-17T19:40:03.113 回答
1

不是AFAIK,但如果您已经从数据库中编写了一个字符串,为什么不能用空字符串编写相同的字符串正则表达式替换标签(或标签对,如您所愿)?

于 2008-12-17T17:40:28.127 回答
1

一句话,没有。

理想情况下,您会这样做$partnername22 = strip_tags('Discover<sup>tm</sup> Magazine');(或做一些更有趣的事情),但如果您不能这样做,那么恐怕您会被 Javascript 解决方案所困。

就像是:

window.title = window.title.replace(/<sup.*?</sup>/, '');
于 2008-12-17T17:41:40.183 回答
1

PHP 中将 <sup>text</sup> 替换为 (text) 的正则表达式:

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

在 javascript 中执行此操作类似。

于 2008-12-17T18:06:10.760 回答
1

迈克,我认为你的意思是:

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

您之前使用它的方式会在标记的单词周围打印一些斜杠和括号。对?

pg,你也可以这样做

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

如果您想完全删除标题中的上标信息。

于 2008-12-17T18:17:04.090 回答
0

一些 CSS 的简单权宜之计怎么样?

h2.title sub, h2.title sup { vertical-align: baseline; font-size:100%; }
于 2009-02-24T11:00:13.323 回答
-1

您可以使用字符编码而不是标记,例如 &trade;&#153;

于 2016-04-25T09:56:57.530 回答