php - 如何返回原始文本并保持其形状和结构?
问题描述
我创建了一个迷你应用程序,用户可以在其中粘贴任何文本并共享它。假设用户在下面输入这些文本。
前任。
╔══╗
╚╗╔╝
╔╝(¯`v´¯)
╚══`.¸.[Stackoverflow]
当我将它加载到 textarea 时,它会正确显示。
但是当我返回原始的那个
我一直在显示内联(损坏)
╔══╗ ╚╗╔╝ ╔╝(¯`v´¯) ╚══`.¸.[Stackoverflow]
我所做的就是这个
public function raw($uuid)
{
$paste = Paste::where('uuid', base64_decode($uuid))->first();
if($paste->type == 'json'){
return response()->json($paste->data);
} else {
return $paste->raw;
}
}
如何保持与在 textarea 中呈现的格式相同的格式?
例 2。
▀██▀─▄███▄─▀██─██▀██▀▀█
─██─███─███─██─██─██▄█
─██─▀██▄██▀─▀█▄█▀─██▀█
▄██▄▄█▀▀▀─────▀──▄██▄▄█
正如您在原始文件中看到的那样,它显示得非常糟糕......
▀██▀─▄███▄─▀██─██▀██▀▀█ ─██─███─███─██─██─██▄█ ─██─▀██▄██▀─▀█▄█▀─██▀█ ▄██▄▄█▀▀▀─────▀──▄██▄▄█
编辑
如果我将它包裹在pre标签上
return '<textarea style="width: 100%; height: 100%;">'. $paste->raw.'</textarea>';
我得到了更好的结果
解决方案
不必将文本包装在<pre></pre>
标签中,只需将 CSS 属性white-space: pre
应用于您正在收集该文本的任何 textarea 或其他元素。
这是pre
CSS 属性的文档:MDN Web Docs:white-space
这将迫使换行符得到尊重。那也应该复制和粘贴就好了。您现有的解决方案似乎对我来说也可以复制和粘贴。确保对该文本框使用等宽字体,因为这是保持所有列对齐所必需的。
您可以在 Google 字体上找到大量免费的等宽字体选项:https ://fonts.google.com/?category=Monospace
例子
没有 white-space: pre
** 确保单击下面的“运行代码片段”按钮以查看渲染预览
<div id="ascii-art" contenteditable>╔══╗
╚╗╔╝
╔╝(¯`v´¯)
╚══`.¸.[Stackoverflow]</div>
✅带有 white-space: pre
等宽字体
** 确保单击下面的“运行代码片段”按钮以查看渲染预览
@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap');
#ascii-art {
font-family: 'Roboto Mono', monospace;
white-space: pre;
}
<div id="ascii-art" contenteditable>╔══╗
╚╗╔╝
╔╝(¯`v´¯)
╚══`.¸.[Stackoverflow]</div>
奖金
如果您想让所有字符紧密并靠在一起,请添加以下 CSS:
white-space: pre;
font-family: consolas;
letter-spacing: -0.3px;
line-height: 1.19;
更改字体系列和字体大小时,需要稍微调整字母间距和行高值。这是您提供的两幅作品的 CSS 实际效果:
#ascii-art {
white-space: pre;
font-family: consolas;
letter-spacing: -0.3px;
line-height: 1.19;
}
<div id="ascii-art" contenteditable>▀██▀─▄███▄─▀██─██▀██▀▀█
─██─███─███─██─██─██▄█
─██─▀██▄██▀─▀█▄█▀─██▀█
▄██▄▄█▀▀▀─────▀──▄██▄▄█
╔══╗
╚╗╔╝
╔╝(¯`v´¯)
╚══`.¸.[Stackoverflow]</div>
推荐阅读
- python-3.x - Django-rest-framework:身份验证/权限错误:TypeError:'str'对象不可调用
- pine-script - 为什么我的策略没有显示任何数据?
- java - 从字符串中读取特定行
- c - 返回重复序列的下一个数字的函数
- java - 如何使用 Selenium 和 Java 验证搜索结果中的所有单词以特定字母开头
- php - 使用现有活动域的 wordpress 多站点安装
- php - 用 phpdbg 覆盖 phpunit:switch 语句中未发现的 case 行
- python - 如何使用 Python 在嵌套字典中打印特定的整数变量?
- android - 如何在android画布中旋转一个圆圈
- javascript - JS显示列表