存储和显示带有上标文本的文本


Storing and displaying text with superscript text

我将以下数据存储在mysql表中的一个字段"call_dtls"中。该数据存储为TEXT数据类型。数据使用<textarea>控件从php生成的页面提交。

mysql数据存储代码:

$mycalltext = mysql_real_escape_string($_POST['text']);
// then storing $mycalltext in the table

存储在表中的数据(每行存储在单独的表行中):

SANDY505™(09-11-11 10:04:47):在385-383 sl 380 trgt 390-393附近买入SANDY505™(09-11-11 10:05:57):在472-468 sl 464 trgt 476-480买入tatasteelSANDY505™(09-11-11 10:06:09):在5295-5280 sl 5260 trgt 5320附近购买之前

当另一个页面稍后获取并显示数据时,™将被替换为-,并且所有内容都显示为单行(断行将被忽略)。例子:

SANDY505 '(09-11-11 10:04:47):在385-383 sl 380 trgt 390-393附近买入hinduniliver SANDY505 '(09-11-11 10:05:57):在472-468 sl 464 trgt 476-480附近买入SANDY505 '(09-11-11 10:06:09):在5295-5280 sl 5260 trgt 5320附近买入nifty

我希望输出是(包括换行符):

SANDY505™(09-11-11 10:04:47):在385-383 sl 380 trgt 390-393附近买入SANDY505™(09-11-11 10:05:57):在472-468 sl 464 trgt 476-480买入tatasteelSANDY505™(09-11-11 10:06:09):在5295-5280 sl 5260 trgt 5320附近购买之前

输出代码:

$rs=mysql_query("Select * from mya_calls", $cn) or die("MySQL error: ".mysql_errno());
$number=mysql_num_rows($rs); 
while ($rsitem=mysql_fetch_object($rs)) 
    echo $rsitem->call_dtls;

仔细检查数据库连接编码和输出HTML的编码是否与数据库上的编码匹配(可能是UTF-8)

DB连接:

mysql_query('SET CHARACTER SET utf8, NAMES utf8');

输出头文件:

header('Content-type: text/html;charset=utf-8');
HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

明白了......: -)

PHP函数nl2br()为我做了这些。两个问题都解决了.....

在谷歌上找到了这个问题的解决方案

感谢@outis对错误信息的解释

一般来说,HTML中的空白是折叠的。例外是在<pre>元素和CSS white-space属性不是"正常"的元素中(特别是,只有当white-space为"pre","pre-wrap"answers"pre-line"时才保留换行符)。

显示多行内容是一个表示问题;不要使用HTML来获得你想要的效果。相反,选择最合适的元素来定义数据的结构。例如,示例看起来是一个无序列表,在这种情况下,<ul>将是合适的。

try {
    $result = $db->query("SELECT call_dtls FROM mya_calls");
    $result->setFetchMode(PDO::FETCH_CLASS, 'StdClass');
    ?>
    <ul>
      <?php foreach ($result as $item) { ?>
        <li><?php echo $item->call_dtls; ?></li>
      <?php } ?>
    </ul>
    <?php
} catch (PDOException $exc) {
    ...
}

一旦你完成了这些,使用CSS来设置元素的样式,如果需要的话。

请注意,示例代码是如何在HTML输出中使用语义元素的示例,并不一定适用于生产代码。在开发过程中,不同的关注点应该被划分到不同的模块中。