我有一个缩短多个链接的代码,但该代码(带有一个可选后缀)代码只能从第二个链接开始工作:
$url_to_shorten = $_POST[links];
$ownshuff = $_POST[shuff];
$theurls = explode("\n",$url_to_shorten);
foreach($theurls as $urlmulti){
shortcreate($urlmulti,$shuffss,$ownshuff);
}
这是一个例子:
我的链接
http://www.123.com
http://www.1234.com
http://www.1235.com
我的后缀是:(Hello_Man)。
用上面的代码打印
http://www.mysite.com/IUo
http://www.mysite.com/kOl-Hello_Man
http://www.mysite.com/Rww-Hello_Man
并且它不会打印第一个链接的后缀。
shortcreate函数是:
function shortcreate($url_long, $Suffix, $ownshuf){
global $db;
$chars = $Suffix;
while (!shortisUnique($chars)) {
if ($ownshuf != "") {
$chars = shortgenerate_chars() . "-" . $ownshuf;
}
else {
$chars = shortgenerate_chars();
}
}
$url = $url_long;
$url = trim($url);
$url = mysql_real_escape_string($url);
if (!shortisThere($url)) {
$q = "INSERT INTO `shorturls` (url, unique_chars) VALUES ('" . $url . "', '" . $chars . "')";
//echo $q;
$r = $db->query($q);
if (mysql_affected_rows()):
$q = "SELECT * FROM `shorturls` WHERE `url`='" . $url . "'";
$r = $db->query($q);
$row = $db->fetch($r);
$the_url = SITE_URL . "" . $row[2];
echo "$the_url\n";
else:
$the_url = NULL;
return false;
endif;
}
else {
$q = "SELECT * FROM `shorturls` WHERE `url` = '" . $url . "'";
$r = mysql_query($q);
$row = mysql_fetch_row($r);
$the_url = SITE_URL . "" . $row[2];
echo "$the_url\n";
}
}
我需要该代码才能适用于所有链接。任何帮助
问候
答案 0 :(得分:1)
我猜问题出现在下一段代码中:
$chars = $Suffix;
while (!shortisUnique($chars)) {
if ($ownshuf != "") {
$chars = shortgenerate_chars() . "-" . $ownshuf;
}
else {
$chars = shortgenerate_chars();
}
}
你给$ chars变量后缀的值,你检查它是否唯一(猜测不是因为它进入循环)而$ownshuf != ""
的条件由于某种原因返回false
(考虑与我们分享该参数的值是什么),否则$chars
的输出将返回带有“ - ”的字符串。
提醒:与我们分享该参数的值是什么