Функция time.time()
возвращает количество секунд, начиная с эпохи, в секундах. Обратите внимание, что «эпоха» определяется как начало 1 января 1970 года в UTC. Таким образом, эпоха определяется в терминах UTC и устанавливает глобальный момент времени. Независимо от того, где вы находитесь «секунды прошлой эпохи» (time.time ()) возвращает одно и то же значение в тот же момент.
Вот несколько примеров, которые я запускал на своем компьютере, преобразовывая его в строку как [. g2]
Python 2.7.3 (default, Apr 24 2012, 00:00:54)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> ts = time.time()
>>> print ts
1355563265.81
>>> import datetime
>>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
>>> print st
2012-12-15 01:21:05
>>>
Переменная ts
- это время, возвращаемое в секундах. Затем я преобразовал его в строку, используя библиотеку datetime
, создав для нее строку, которая читается человеком.
Вот мое решение в C#
private string ToSeoFriendly(string title, int maxLength) {
var match = Regex.Match(title.ToLower(), "[\\w]+");
StringBuilder result = new StringBuilder("");
bool maxLengthHit = false;
while (match.Success && !maxLengthHit) {
if (result.Length + match.Value.Length <= maxLength) {
result.Append(match.Value + "-");
} else {
maxLengthHit = true;
// Handle a situation where there is only one word and it is greater than the max length.
if (result.Length == 0) result.Append(match.Value.Substring(0, maxLength));
}
match = match.NextMatch();
}
// Remove trailing '-'
if (result[result.Length - 1] == '-') result.Remove(result.Length - 1, 1);
return result.ToString();
}
Я выполнил бы эти шаги:
preg_replace()
, вызов функции уже предотвращает несколько дефисов) Так, все вместе в функции (PHP):
function generateUrlSlug($string, $maxlen=0)
{
$string = trim(preg_replace('/[^a-z0-9]+/', '-', strtolower($string)), '-');
if ($maxlen && strlen($string) > $maxlen) {
$string = substr($string, 0, $maxlen);
$pos = strrpos($string, '-');
if ($pos > 0) {
$string = substr($string, 0, $pos);
}
}
return $string;
}
C#
public string toFriendly(string subject)
{
subject = subject.Trim().ToLower();
subject = Regex.Replace(subject, @"\s+", "-");
subject = Regex.Replace(subject, @"[^A-Za-z0-9_-]", "");
return subject;
}
Вот решение для php:
function make_uri($input, $max_length) {
if (function_exists('iconv')) {
$input = @iconv('UTF-8', 'ASCII//TRANSLIT', $input);
}
$lower = strtolower($input);
$without_special = preg_replace_all('/[^a-z0-9 ]/', '', $input);
$tokens = preg_split('/ +/', $without_special);
$result = '';
for ($tokens as $token) {
if (strlen($result.'-'.$token) > $max_length+1) {
break;
}
$result .= '-'.$token;
}
return substr($result, 1);
}
использование:
echo make_uri('In C#: How do I add "Quotes" around string in a ...', 500);
, Если Вам не нужен uris, чтобы быть typable, они не должны быть маленькими. Но необходимо определить максимум так, чтобы URL работали хорошо с прокси и т.д.
Немного более чистый способ сделать это в PHP, по крайней мере:
function CleanForUrl($urlPart, $maxLength = null) {
$url = strtolower(preg_replace(array('/[^a-z0-9\- ]/i', '/[ \-]+/'), array('', '-'), trim($urlPart)));
if ($maxLength) $url = substr($url, 0, $maxLength);
return $url;
}
Мог бы также сделать trim()
в запуске, таким образом, существует меньше для обработки позже, и полная замена, покончили в preg_replace()
.
Thxs к cg для предложения большей части из этого: , На чем лучший способ состоит в том, чтобы убрать строку для размещения в URL, как имя вопроса ТАК?
Лучшая версия:
function Slugify($string)
{
return strtolower(trim(preg_replace(array('~[^0-9a-z]~i', '~-+~'), '-', $string), '-'));
}
Solution in Perl:
my $input = 'In C#: How do I add "Quotes" around string in a comma delimited list of strings?';
my $length = 20;
$input =~ s/[^a-z0-9]+/-/gi;
$input =~ s/^(.{1,$length}).*/\L$1/;
print "$input\n";
done.
Решение в оболочке:
echo 'In C#: How do I add "Quotes" around string in a comma delimited list of strings?' | \
tr A-Z a-z | \
sed 's/[^a-z0-9]\+/-/g;s/^\(.\{1,20\}\).*/\1/'
In a dynamic URL, these IDs are passed via the query string to a script that ... as the delimiting character because most search engines treat the dash as a ... NET: A Developer's Guide to SEO also covers these three additional methods search engine optimization