0

我有一个这样的日语字符串(从数据库中获取)

$myString = "いっぱい< br />んどん"

因为 API 要求输入字符串必须是 URL 编码的,所以我使用它进行编码

urlencode($myString);

问题是 API 平台页面在文本区域中显示该字符串。

如您所知,HTML texarea 不允许使用 HTML < br /> 换行。它只允许“ ” 显示换行符。

所以现在我不知道如何在 API 平台的 textarea 中显示 $myString

我的工作流程:我的网站 -> 将 $myString 传递给 API -> $myString 在 API 平台页面中显示(不是我的)

更新:

API是这样的

< a href="diary:self?guid=ON&url=http%3A%2F%2Fredirect_uri.com&subject=%83e%83X%83g&body=....">Something< /a>

我必须将 myString 传递给 body=...

更新:

这是我尝试过的:

function convertBrTagtoASCII($string) {
    $string = str_replace(array("</br>", "</br >", "<br>", "<br >"), "&#10;", $string);
    return $string;
}

$converted = convertBrTagtoASCII($myString);

将所有 br 标记替换为 & #10;,然后是 urlencode($converted),然后传递给 API 链接的“body”参数。textarea 中的输出是

いっぱい&#10;んどん

该平台似乎不仅 urldecode 还转义了字符串。:(

4

3 回答 3

1

使用htmlentities转义特殊的 HTML 字符,例如<.

echo '<textarea>'.htmlentities($myString).'</textarea>'

在 textarea 元素中,您可以使用换行符,因此无需对它们进行特殊转义。

编辑:也许我误解了这个问题,你的数据库中已经有<br>标签。在这种情况下,您可以用换行符替换这些标签。另一种方法是使用富文本编辑框,例如TinyMCE,它支持 HTML 编辑。

于 2012-05-24T07:00:26.820 回答
1

您没有编码问题,您有无效数据问题。您要发送到 API 的字符串在 API 上下文中无效。你会有同样的问题"Hello<br />World"

有三种可能:

  • 字符串应该是"Hello&lt;br /&gt;World"or "いっぱい&lt; br /&gt;んどん",在这种情况下,您可以简单地修复它(及其表兄弟)
  • 字符串应该是"Hello\nWorld"or "いっぱい\nんどん",在这种情况下,您需要一个正则表达式或类似的工具来修复它,然后再进行 urlencoding。
  • 该字符串确实格式不正确:在这种情况下,您应该同时拒绝:"Hello<br />World""いっぱい< br />;んどん"

要点是,这不是编码或您的代码的属性:是的,您可以尝试修复明显的缺陷,但不,没有黄金法则

于 2012-05-24T07:06:54.167 回答
0

将您的休息时间转换为 ascii。然后对 URL 进行编码。然后运行正则表达式替换以转换编码的换行符

%26%2310%3B

回到

&#10;
于 2012-05-24T09:40:01.303 回答