URL编码。非常困难

时间:2012-05-24 06:57:09

标签: php html line-breaks

我有这样的日语字符串(来自数据库)

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

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

对其进行编码

进行urlencode($ myString的);

问题是API平台页面在textarea中显示该字符串。

如您所知,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标签替换为&amp; #10;,然后urlencode($ converted),然后传递给API链接的“body”参数。 textarea中的输出是

いっぱい&#10;んどん

似乎该平台不仅urldecode而且还逃脱了字符串。 :(

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

有三种可能性:

  • 字符串应为"Hello&lt;br /&gt;World""いっぱい&lt; br /&gt;んどん",在这种情况下,您只需使用
  • 修复它(及其表兄弟)
  • 字符串应为"Hello\nWorld""いっぱい\nんどん",在这种情况下,您需要使用正则表达式或类似工具在urlencoding之前修复它。
  • 字符串确实格式不正确:在这种情况下,您应该同时拒绝:"Hello<br />World""いっぱい< br />;んどん"

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

答案 2 :(得分:0)

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

%26%2310%3B

回到

&#10;