String in HH:SS format to ISO 8601
De titel zegt al veel maar ik zal wat meer uitleg geven in waarom ik dit wil toepassen. Ik heb een video website waar ik de schema.org video markupschema.org video markup wil implementeren. Google heeft een officiële blogpostofficiële blogpost gepubliceerd dat zegt dat video websites deze markup moeten gebruiken op deze manier zal Google de video's correct kunnen indexeren. Dit is hoe de markup eruitziet bij Youtube:
<div id="watch-container" itemscope itemtype="http://schema.org/VideoObject">
<link itemprop="url" href="http://www.youtube.com/watch?v=dS9SIL4pTWU">
<meta itemprop="name" content="Le Zap de Spi0n n°139">
<meta itemprop="description" content="http://www.spi0n.com Le 139ième Zap du site ! C'est le zapping du web où vous trouverez une compilation de vidéos étonnantes et insolites qui ont circulé cet...">
<meta itemprop="duration" content="PT10M27S"> (Duration: 10:27 = HH:SS)
<meta itemprop="unlisted" content="False">
<meta itemprop="paid" content="False">
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<link itemprop="url" href="http://www.youtube.com/user/ZapdeSpi0n">
</span>
<link itemprop="thumbnailUrl" href="http://i1.ytimg.com/vi/dS9SIL4pTWU/hqdefault.jpg">
<span itemprop="thumbnail" itemscope itemtype="http://schema.org/ImageObject">
<link itemprop="url" href="http://i1.ytimg.com/vi/dS9SIL4pTWU/mqdefault.jpg">
<meta itemprop="width" content="320">
<meta itemprop="height" content="180">
</span>
<link itemprop="embedURL" href="http://www.youtube.com/v/dS9SIL4pTWU?version=3&autohide=1">
<meta itemprop="playerType" content="Flash">
<meta itemprop="width" content="1280">
<meta itemprop="height" content="720">
<meta itemprop="isFamilyFriendly" content="True">
Ik heb alles makkelijk kunnen implementeren omdat alle deze waarden zich al bevinden in mijn database. De lengte van de video bevindt zich ook in de database maar is opgeslagen als een string niet als een integer onder het formaat HH:SS (vb 10:27). Weet er iemand hoe ik $video_duration (HH:SS) kan omzetten naar ISO 8601 date format?
Alvast Bedankt!
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$time = '10:27';
$timeElemetns = explode(':', $duration);
$duration = 'PT'.$timeElements[0].'M'.$timeElements[1].'S';
?>
$time = '10:27';
$timeElemetns = explode(':', $duration);
$duration = 'PT'.$timeElements[0].'M'.$timeElements[1].'S';
?>
1:23 = T1M23S?
Dan moet dit genoeg zijn
Grappig, ik begon met explode maar dacht er hoeft maar 1 ding vervangen te worden. Post het en zie Wouter een explode gebruiken :p
Gewijzigd op 25/10/2012 14:44:34 door TJVB tvb
Duration.....Website....Youtube
00:01........PT00M01S...PT0M1S
01:08........PT01M08S...PT1M8S
07:50........PT07M50S...PT7M50S
Is het mogelijk om die eerste nul van HH en SS weg te laten?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if($video_duration[0] == 0)
{
$video_duration =substr($video_duration,1);
}
$duration = 'PT' . str_replace(':','M', $video_duration ) . 'S';
?>
if($video_duration[0] == 0)
{
$video_duration =substr($video_duration,1);
}
$duration = 'PT' . str_replace(':','M', $video_duration ) . 'S';
?>
Gewijzigd op 25/10/2012 17:03:27 door TJVB tvb
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$video_duration= "00:01";
if($video_duration[0] == 0)
{
$video_duration[0] =substr($video_duration,1);
}
$duration = 'PT' . str_replace(':','M', $video_duration ) . 'S';
echo "$duration";
?>
$video_duration= "00:01";
if($video_duration[0] == 0)
{
$video_duration[0] =substr($video_duration,1);
}
$duration = 'PT' . str_replace(':','M', $video_duration ) . 'S';
echo "$duration";
?>
$video_duration[0] =substr($video_duration,1);
Moet
$video_duration =substr($video_duration,1);
zijn
Erg bedankt voor de hulp! De code klopt bijna voor de HH haalt die de nul weg bij SS niet. Dit is het resultaat "PT0M01S"
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$time = '10:27';
$timeElemetns = explode(':', $duration);
$duration = 'PT'.(int) $timeElements[0].'M'.(int) $timeElements[1].'S';
?>
$time = '10:27';
$timeElemetns = explode(':', $duration);
$duration = 'PT'.(int) $timeElements[0].'M'.(int) $timeElements[1].'S';
?>
Ik heb eens gekeken in de php manual substr.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$rest = substr("abcdef", 0, -1); // returns "abcde"
$rest = substr("abcdef", 2, -1); // returns "cde"
$rest = substr("abcdef", 4, -4); // returns false
$rest = substr("abcdef", -3, -1); // returns "de"
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
?>
$rest = substr("abcdef", 0, -1); // returns "abcde"
$rest = substr("abcdef", 2, -1); // returns "cde"
$rest = substr("abcdef", 4, -4); // returns false
$rest = substr("abcdef", -3, -1); // returns "de"
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
?>
Ik dacht het op deze manier op te lossen maar blijkt dat je alleen opeenvolgende waardes kunt substr. Is dit correct? Is er een manier om die 1ste nul van HH en die 1ste nul van SS te substr?
Ah, dat komt door een typfout van mij.$timeElemetns moet $timeElements zijn op regel 3.
Gewijzigd op 25/10/2012 20:27:13 door Sofian B