又是西里尔文!又是问题!
没有符号,%
一切正常,但是当字符进入变量%
时,链接的所有文本都会自动转换为%22%D0%B2%D1%8B%D1%81%D0%B
类似的十六进制代码。
变量 $weather_string_line:= " Сейчас в городе высокая влажность (78%). В Красноярске сегодня в 19:00 ожидается +20°C, дождь, легкий ветер.
" 中的文本。
通过以下方式工作:
print "<br><a href='http://tts.voicetech.yandex.net/generate?text=\"".$weather_string_line."\"&format=mp3&lang=ru-RU&speaker=oksana&emotion=normal&key=[developers_key]' target='_self'>Проговорить погоду...</a>";
如何摆脱困境?解析文本,找到符号%
并将其替换为"процент"
- 但这称为拐杖。
也许有一个我还没有看到的更合理的解决方案?
UPD:到目前为止,我已经通过涟漪实现了它:$speach_text = str_replace("%", "процентов", $weather_string_line);
因为一般需要遵循 API 文档和 HTTP 标准。
文档明确说:
而且,更重要的是,您必须遵循 HTTP 和 URL 格式标准。那里没有西里尔字母。什么都没有,只有数字、拉丁字母和符号
-_.
。其他所有内容都应以%code
符号表示。PHP 提供了 URL 编码的功能
urlencode
。此外,由于您是在 HTML 中插入链接,因此最好注意 HTML 中的正确表示。文档中的示例说明了什么:大的参数列表通常更方便给 PHP 本身使用函数来形成
http_build_query
所以整个查询字符串将被正确组装和编码。