Php 通过fsockopen()返回无关字符的HTTP GET请求

Php 通过fsockopen()返回无关字符的HTTP GET请求,php,fsockopen,Php,Fsockopen,我正在使用fsockopen()从另一台服务器上的页面请求一个值。返回的值只是一个单词(例如“法语”)。当我在localhost(MAMP)上进行测试,向远程服务器发出请求时,这可以正常工作。但是,当我从服务器到服务器进行测试时,我会使用额外的字符,例如: 6%0D%0A法国%0D%0A0%0D%0A%0D%0A 或 7%0D%0A英语%0D%0A0%0D%0A%0D%0A 我正在使用如图所示的http_request()函数。我所做的唯一更改是增加超时时间。我用以下方式来称呼它: $thela

我正在使用
fsockopen()
从另一台服务器上的页面请求一个值。返回的值只是一个单词(例如“法语”)。当我在localhost(MAMP)上进行测试,向远程服务器发出请求时,这可以正常工作。但是,当我从服务器到服务器进行测试时,我会使用额外的字符,例如:

6%0D%0A法国%0D%0A0%0D%0A%0D%0A
7%0D%0A英语%0D%0A0%0D%0A%0D%0A

我正在使用如图所示的http_request()函数。我所做的唯一更改是增加超时时间。我用以下方式来称呼它:

$thelanguage=http\u请求('GET',$domain,80,$path)

我已经在多台服务器上测试了这个功能,当我从除localhost以外的任何地方发出请求时,额外的字符都会显示出来

我有点不知所措,不知该怎么办。看起来返回的字符串开头的6或7是一个字符计数,但我不知道这是从哪里来的。任何帮助都将不胜感激

返回的字符串开头的6或7似乎是一个字符计数

是的!你会看到:数据长度,CRLF,数据,然后是两对CRLF。我相信最后一个CRLF意味着它是最后一块

您可能希望使用更完善、经过测试、功能齐全的HTTP请求机制,如通常内置的或

返回的字符串开头的6或7似乎是一个字符计数

是的!你会看到:数据长度,CRLF,数据,然后是两对CRLF。我相信最后一个CRLF意味着它是最后一块


您可能希望使用一个更完善、测试良好、功能齐全的HTTP请求机制,比如通常内置的./P.>我知道它是片状的,但是您会考虑剥离这些无关的数据吗?我会认为这是最后一招。由于额外的数据似乎会根据返回的单词发生轻微的变化,因此它并不完全是防弹的。我也不知道最终会归还的所有单词,所以我不能测试所有的病例。我知道它是片状的,但是你会考虑剥离这些无关的数据吗?我会认为这是最后一招。由于额外的数据似乎会根据返回的单词发生轻微的变化,因此它并不完全是防弹的。另外,我不知道最终将返回的所有单词,所以我不能测试所有的案例。我想测试(最初使用cURL完成),但这个脚本将分发给客户在他们的服务器上运行,我对此没有任何控制权。我担心在某些情况下不会安装/启用cURL或PEAR,因此我尝试使用最低公分母。@dosboy,HTTP_Request2是根据BSD许可证发布的,因此您可以简单地将其(以及所需的Net_URL2)与代码捆绑在一起。它包括,所以它应该在任何地方都能很好地工作。与此同时,尽管你让我走上了正确的道路。我只是在响应页面中添加了一个

内容长度
标题,不再进行分块!谢谢我想这样做(最初是使用cURL完成的),但是这个脚本将分发给客户在他们的服务器上运行,我对此没有任何控制权。我担心在某些情况下不会安装/启用cURL或PEAR,因此我尝试使用最低公分母。@dosboy,HTTP_Request2是根据BSD许可证发布的,因此您可以简单地将其(以及所需的Net_URL2)与代码捆绑在一起。它包括,所以它应该在任何地方都能很好地工作。与此同时,尽管你让我走上了正确的道路。我只是在响应页面中添加了一个
内容长度
标题,不再进行分块!谢谢