我有这样的日语字符串(来自数据库)
$ 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 >"), " ", $string);
return $string;
}
$converted = convertBrTagtoASCII($myString);
将所有br标签替换为&amp; #10;,然后urlencode($ converted),然后传递给API链接的“body”参数。 textarea中的输出是
いっぱい んどん
似乎该平台不仅urldecode而且还逃脱了字符串。 :(
答案 0 :(得分:1)
使用htmlentities转义特殊HTML字符,例如<
。
echo '<textarea>'.htmlentities($myString).'</textarea>'
在textarea元素中,您可以使用换行符,因此无需对其进行特殊转义。
编辑:也许我误解了这个问题,你的数据库中已经有<br>
个标签。在这种情况下,您可以使用换行符替换这些标记。另一种方法是使用富文本编辑框,例如TinyMCE,它支持HTML编辑。
答案 1 :(得分:1)
您没有编码问题,您有无效数据问题。您要发送到API的字符串在API的上下文中无效。你对"Hello<br />World"
也有同样的问题。
有三种可能性:
"Hello<br />World"
或"いっぱい< br />んどん"
,在这种情况下,您只需使用"Hello\nWorld"
或"いっぱい\nんどん"
,在这种情况下,您需要使用正则表达式或类似工具在urlencoding之前修复它。"Hello<br />World"
和"いっぱい< br />;んどん"
重点是,这不是编码或代码的属性:是的,你可以尝试修复明显的缺陷,但没有没有黄金法则
答案 2 :(得分:0)
将您的休息转换为ascii。然后编码URL。 然后运行正则表达式替换以转换编码的换行符
%26%2310%3B
回到