从 MySQL 数据库导入时如何包装文本,而不是之前?

How to wrap text when inporting from MySQL database, not before?

我有一个与导入文本换行相关的问题,之前使用经典 PHP - HTML 表单方法插入 MySQL。

问题如下。我想将保存在 MySQL 数据库中的文本加载到我网页的 "news" 部分。问题是我的网页有PC版和手机版,每一个都有不同的宽度。

所以,当我将文本提交到 MySQL 时,我不想插入换行符(我的意思是如果文本行宽超过 hipotethical "cols",表单将提交的换行符宽度,假设我会做一个 "physhical" 或 "hard" 换行;手动插入的换行符来分隔我当然想保留的段落)因为据我所知,你必须指定 "cols",这是一个参数,在进行换行之前会告诉行宽。

这没什么意思,因为我的 "news" 部分的文本字段将有不同的宽度,正如我告诉过你的,所以从 MySQL 导入带有换行符的文本不会调整我网站中的两种不同 "news" 大小。

我需要的是将文本上传到 MySQL 并且没有换行符,然后让我网站中的两个 "news" 部分对文本进行格式化。

虽然这很容易,因为我只是将 MySQL 数据库中保存的文本解析为具有指定宽度的 <div> 标签。但问题是文本每次都会溢出 <div> 容器宽度。

这是我在 HTML 表单中用作文本输入的内容:

<textarea name="STORY" wrap="physical">EXAMPLE</textarea> 

要在 MySQL 中注入新闻,我使用典型的 PHP:

$var = "INSERT INTO exampleTable ('story') VALUE ($_POST['STORY']);

要加载保存的文本,我只是回显从 MySQL 数据库的故事字段导入文本的变量值,位于 div 标签之间:

echo "<div>".$story."</div>";

如您所见,因为我不想在插入来自 MySQL 中的文本时使用 "hard" 换行以避免在行中插入换行符否则会超过 "cols" 宽度,我使用 "phisycal" 换行,但我没有指定 "cols",所以我认为应该防止表单插入除我手动做的(按 "enter" 键)。

但是生成的文本,当我回显它时,会溢出我的 div 宽度,正如我之前告诉过你的那样。

div 宽度不应该将文本包裹在自身内部吗?

我应该从表单中删除 wrap="physhical" 属性吗?

首先,请注意,您插入数据库很可能是不安全的,并且可能会导致 SQL 次注入。

要删除每个换行符,您可以这样做:

echo "<div>".str_replace("\n", "", $story)."</div>";

您可以尝试使用 TRIM() 函数在 MySQL 中处理此问题:

INSERT INTO exampleTable ('story') VALUE TRIM(TRAILING '\n' FROM $_POST['STORY'])

您不应该自己插入换行符 - CSS 可以为您完成。 Here 是一个 SO 答案,似乎可以完成您可能想做的所有事情。