题
我们使用超级长哈希的新用户在我们的应用程序的注册。的问题是,这些哈希值在一些电子邮件客户端打破 - 使链接不可用
我想实现TinyURL的 - API,用一个简单的通话,但我认为它超时有时......有时邮件无法到达用户
<击>我更新的代码,但现在的URL是永远不会转换。是真的TinyURL的这么慢还是我做错了什么? (我的意思哎,5秒是多在此时间)击>
<击> 击><击>可有人给我推荐一个更可靠的服务?击>
都是我的错,忘记在FOPEN假。但我会离开这里的代码此示例,因为我经常会看到这样的样品,至极我觉得不工作非常可靠的:
return file_get_contents('http://tinyurl.com/api-create.php?url='.$u);
这是 - 我认为完全工作的样品。我想听到的改进。
static function gettinyurl( $url ) {
$context =
stream_context_create(
array(
'http' => array(
'timeout' => 5 // 5 Seconds should be enough
)
)
);
// get tiny url via api-create.php
$fp = fopen( 'http://tinyurl.com/api-create.php?url='.$url, 'r', $context); // open (read) api-create.php with long url as get parameter
if( $fp ) { // check if open was ok
$tinyurl = fgets( $fp ); // read response
if( $tinyurl && !empty($tinyurl) ) // check if response is ok
$url = $tinyurl; // set response as url
fclose( $fp ); // close connection
}
// return
return $url; // return (tiny) url
}
解决方案
您可能需要使用 urlencode()来,在url
参数。
时,还建议以检查针对fgets()
false
。然后,您可以通过比较只是一个空字符串的响应保存empty()
函数调用,如:
$line = fgets($fp);
if ($line !== false && $line !== '') {
// ...
}
通常,可取的是首先核对false
一切,如果函数返回不同类型的诸如integer
或boolean
的值。这可能是至关重要的,因为0
和false
在比较相同的意思。由于PHP缺乏类型安全,强烈建议经常检查类型的相等。甚至有案件的文档建议这个时候明确,例如在 strpos()的情况下。同时,我强迫自己使用===
到==
,同为'!=”等,这需要更多的打字声,而是因为你消除可能存在的缺陷,绝对是值得的。
你的代码的其余部分对我来说很好。
不隶属于 StackOverflow