gpt4 book ai didi

php - HTML 标记作为 HTML 实体保存到数据库

转载 作者:行者123 更新时间:2023-11-29 05:16:07 26 4
gpt4 key购买 nike

我正在使用这段代码来更新数据库中的值:

function text_save( $page_name, $page_title, $page_text ) {

$servername = "127.0.0.1";
$username = "abcd";
$password = "password";
$dbname = "thedatabase";

// Create connection
$conn = new mysqli( $servername, $username, $password, $dbname );

// Check connection
if ( $conn->connect_error ) {
die( "Connection failed: " . $conn->connect_error );
}

$page_content = $page_text;

$sql = "UPDATE text SET page_title=?, page_text=? WHERE text_name=?";

// prepare and bind
$stmt = $conn->prepare( $sql );

// check whether the prepare() succeeded
if ( $stmt === false ) {
trigger_error( $this->mysqli->error, E_USER_ERROR );
}

$stmt->bind_param( 'sss', $page_title, $page_content, $page_name );

$stmt->execute();

print '<p>Text saved</p>';

$stmt->close();
$conn->close();
}

变量$page_text从表单提交上的 tinymce 文本区域设置,是 HTML 内容。

如果我 var_dump $page_text 的值,结果如下: string(23) "<p>test</p>"

$page_content数据保存到数据库中,保存为:

&lt;p&gt;test&lt;/p&gt;

但是,如果我手动设置$page_content的值到 <p>test</p>,

例如$page_content = "<p>test</p>";代替 $page_content = $page_text;

它被保存到数据库中:

<p>test</p>

我需要将 HTML 保存到数据库而不转换为 HTML 实体,即 <p>test</p>不是 &lt;p&gt;test&lt;/p&gt;

这是我到目前为止尝试过的:

将页面设置为 utf8 - <meta charset="utf-8" /> ,

将表单设置为 utf8 - accept-charset="UTF-8" ,

将连接设置为 utf8 - mysqli_set_charset($conn,"utf8");

用 - entity_encoding : "raw" 设置 tinymce init

我在这里做错了什么,为什么当我手动设置变量而不是使用表单变量值(这似乎是相同的)时 HTML 字符串保存正确?

非常感谢!

最佳答案

您可能正在寻找 html_entity_decode 函数,

http://php.net/manual/en/function.html-entity-decode.php

$page_content = html_entity_decode($page_text);

注意注入(inject)等。

关于php - HTML 标记作为 HTML 实体保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com