Twitter aanpassing
Ik probeer goed mogelijk te uitleggen ivm mijn taalbegrips probleem (ben slechthorend)
Ik heb deze twitter script gebruikt uit deze pagina:
http://www.phphulp.nl/php/script/snippets/twitter-op-je-website-via-rss/1857/
Dat heeft mooi werkend: www.cooltennis.nl/twitter.php met stuk aanpassing heb ik dit eruit gehaald:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Format datetime to relative time
function relativetime($sDate)
{
$timestamp = strtotime($sDate);
$now = time();
$timediff = floor($now - $timestamp);
switch(true)
{
case ($timediff < 60):
return $timediff.' seconden geleden';
case($timediff >= 60 && $timediff < 120):
return floor($timediff/60).' minuut geleden';
case($timediff >= 120 && $timediff < 3600):
return floor($timediff/60).' minuten geleden';
case($timediff >= 3600 && $timediff < 86400):
return floor($timediff/3600).' uur geleden';
case($timediff >= 86400 && $timediff < 172800):
return floor($timediff/86400).' dag geleden';
case($timediff >= 172800 && $timediff < 602800):
return floor($timediff/86400).' dagen geleden';
case($timediff >= 602800 && $timediff < 1209600):
return floor($timediff/602800).' week geleden';
case($timediff >= 1209600):
return floor($timediff/602800).' weken geleden';
}
}
gewijzigd naar:
// Format datetime to relative time
function relativetime($sDate)
{
$timestamp = strtotime($sDate);
$now = time();
$timediff = floor($now - $timestamp);
{
return date ('d-m-Y G:i', $timestamp);
}
}
Dat ik alleen datum/tijd lees en niet van bijvoorbeeld 2uur geleden enz.
Mijn volgende punt die ik nog niet voor elkaar kreeg waar Justin van de scripter persoon ook niet uit kwam.
Ik zet voorbeeld neer, want ik weet zelf ook niet hoe ik dit uitleg schrijf maar misschien zegt het voorbeeld al duidelijk welk richting ik bedoel:
Twitter zoals altijd:
Bed zoeken @ Thuis
tijd / datum
--
@piet Gaat het morgen afspraak door?
tijd / datum
--
@justin Dit is een voorbeeld twitter
tijd / datum
--
Morgen weer werken, vandaag vrije dag. @ Thuis
tijd / datum
--
Het bedoeling van mijn idee:
Bed zoeken @ Thuis
tijd / datum
--
Morgen weer werken, vandaag vrije dag. @ Thuis
tijd / datum
--
Als je het verlijkt, valt de nicknamen twitter, waar je opreageert, eruit.
Is dat mogelijk?
Er is dit stuk bij gekomen die niet werkte:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$str = strpos($tweet[1], '@');
// En dan in de while waar de berichten uitgeladen worden direct na de {
if($str === false) {
// echo tweet
} else {
// doe niks.
}
// En dan in de while waar de berichten uitgeladen worden direct na de {
if($str === false) {
// echo tweet
} else {
// doe niks.
}
Wat ik nu heb staan in mijn twitter.php
ziet nu zo eruit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
// Format datetime to relative time
function relativetime($sDate)
{
$timestamp = strtotime($sDate);
$now = time();
$timediff = floor($now - $timestamp);
{
return date ('d-m-Y G:i', $timestamp);
}
}
// Format text to links
function formatlinks($text)
{
$text = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $text);
return $text;
}
// Set parameters
$userid = 'cooltennis';
$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name='.$userid;
$limit = 10;
$c = 0;
$ch = curl_init();
$timeout = 5;
// CURL performance optimalisation
curl_setopt ($ch, CURLOPT_URL, $feed);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$feed = curl_exec($ch);
curl_close($ch);
$str = strpos($tweet[1], '@');
// En dan in de while waar de berichten uitgeladen worden direct na de {
if($str === false) {
// echo tweet
} else {
// doe niks.
}
// Unload XML feed and display
$twitter = new SimpleXMLElement($feed);
foreach($twitter->channel->item as $entry)
{
$c++;
$tweet = explode(':', $entry->title, 2);
echo ' <div class="tweet">
<div class="content">
<a href="http://twitter.com/#!/'.$tweet[0].'">'.$tweet[0].'</a> '.formatlinks($tweet[1]).'
</div>
<div class="bottom">
'.relativetime($entry->pubDate).'
</br><HR STYLE="width: 100%; height: 1px; color: #000000; background-color: #000000; border: solid #000000 0px;">
</div>
</div>
';
if($c == $limit) break;
}
?>
// Format datetime to relative time
function relativetime($sDate)
{
$timestamp = strtotime($sDate);
$now = time();
$timediff = floor($now - $timestamp);
{
return date ('d-m-Y G:i', $timestamp);
}
}
// Format text to links
function formatlinks($text)
{
$text = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text);
$text = preg_replace("/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $text);
return $text;
}
// Set parameters
$userid = 'cooltennis';
$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name='.$userid;
$limit = 10;
$c = 0;
$ch = curl_init();
$timeout = 5;
// CURL performance optimalisation
curl_setopt ($ch, CURLOPT_URL, $feed);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$feed = curl_exec($ch);
curl_close($ch);
$str = strpos($tweet[1], '@');
// En dan in de while waar de berichten uitgeladen worden direct na de {
if($str === false) {
// echo tweet
} else {
// doe niks.
}
// Unload XML feed and display
$twitter = new SimpleXMLElement($feed);
foreach($twitter->channel->item as $entry)
{
$c++;
$tweet = explode(':', $entry->title, 2);
echo ' <div class="tweet">
<div class="content">
<a href="http://twitter.com/#!/'.$tweet[0].'">'.$tweet[0].'</a> '.formatlinks($tweet[1]).'
</div>
<div class="bottom">
'.relativetime($entry->pubDate).'
</br><HR STYLE="width: 100%; height: 1px; color: #000000; background-color: #000000; border: solid #000000 0px;">
</div>
</div>
';
if($c == $limit) break;
}
?>
Niemand een idee?
Wat wil je nu precies bereiken? Als ik jou voorbeeld zie is dat precies hetzelfde als wat je nu al hebt.
Je moet die strpos controle in je foreach-lus doen. Je mag dan controleren op strpos($tweet[1], '@') === 0 of substr($tweet[1], 0, 1) == '@' omdat alleen tweets die beginnen met een nickname een at-reply zijn. Je kan immers ook wel iets over iemand zeggen, waarbij dus de nickname ergens in het midden van de tweet komt, maar dat zijn geen at-replies, en die wil je denk ik niet weglaten.