我有一个与导入文本的换行相关的问题,以前使用经典的PHP-HTML表单方法插入到MySQL中。
问题如下。我想将保存在MySQL数据库中的文本加载到我的网页的“新闻”部分。问题是我的网页有PC版和移动版,每个版本都有不同的宽度。
因此,当我将文本提交给MySQL时,我不想插入换行符(我的意思是如果文本行宽度超过了一个hipotethical“cols”宽度,表单将提交换行符,假设我做了一个“physhical”或“硬”换行;手动插入换行符以分隔我想要保留的段落)因为据我所知,你必须指定“cols”,这是一个告诉行宽的参数在做换行之前。
这不是很有趣,因为我的“新闻”部分的文本字段将具有不同的宽度,正如我告诉你的那样,因此从MySQL导入带有换行符的文本将不会调整我网络中的两个不同的“新闻”大小。
我需要的是将文本上传到没有换行符的MySQL,然后让我网页上的两个“新闻”部分进行文本格式化。
我虽然这很容易,因为我只是将MySQL数据库中保存的文本解析为具有指定宽度的<div>
标记。但问题是文本每次溢出<div>
容器宽度。
这就是我用作HTML表单中的文本输入:
<textarea name="STORY" wrap="physical">EXAMPLE</textarea>
要在MySQL中注入新闻,我使用典型的PHP:
$var = "INSERT INTO exampleTable ('story') VALUE ($_POST['STORY']);
要加载保存的文本,我只是回显一个变量的值,该变量从div标记之间的MySQL数据库的story字段导入文本:
echo "<div>".$story."</div>";
正如你所看到的,因为当我从MySQL中插入文本时我不想使用“硬”包装以避免在行中插入换行符,否则会超出“cols”宽度,我使用“phisycal”换行,但我没有指定“cols”,所以我认为这应该防止表单插入换行符,而不是我手动换行(假设“输入”键)。
但是,当我回应它时,由此产生的文本将溢出我的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答案,似乎可以做你想做的一切。