XML (recieve check and send)
Ik probeer tweets van twitter op te halen, nu is het zo dat deze tweets soms ernstige scheldwoorden of de meest gore teksten bevat. Daarom wil ik nu eerst de tweets controleren voordat ze gepubliceerd worden. Ik weet dat dit niet 100% te voorkomen is maar het filtert wel het grootste deel van deze 'foute' tweets.
Maar nu geeft hij een error! terwijl ik eigenlijk de xml gewoon doorgeef en er alleen een check op los laat.
Hoe kan dit?
error:
Code (php)
1
2
3
4
2
3
4
This page contains the following errors:
error on line 1 at column 1370: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
error on line 1 at column 1370: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
PHP:
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
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
<?php
header("Content-Type: application/xml;");
$bad = array(
'hoeren',
'kanker',
'begonnen',
'smerig',
'poep',
'poepen',
'schijt',
'tering'
);
if (!isset($_GET['q'])) {
$q = 'rollcomm';
}else {
$q = $_GET['q'];
}
if (!isset($_GET['rpp'])) {
$rpp = 10;
}else {
$rpp = $_GET['rpp'];
}
$error = false;
for ($i=1; $i < $rpp; $i++) {
foreach ($bad as $b) {
if ($error == false) {
$search = "http://search.twitter.com/search.atom?q=%23".$q."&rpp=1";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
if (strpos($twi, $b)) {
$error = true;
}else{
print_r($twi);
}
}
}
}
?>
header("Content-Type: application/xml;");
$bad = array(
'hoeren',
'kanker',
'begonnen',
'smerig',
'poep',
'poepen',
'schijt',
'tering'
);
if (!isset($_GET['q'])) {
$q = 'rollcomm';
}else {
$q = $_GET['q'];
}
if (!isset($_GET['rpp'])) {
$rpp = 10;
}else {
$rpp = $_GET['rpp'];
}
$error = false;
for ($i=1; $i < $rpp; $i++) {
foreach ($bad as $b) {
if ($error == false) {
$search = "http://search.twitter.com/search.atom?q=%23".$q."&rpp=1";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
if (strpos($twi, $b)) {
$error = true;
}else{
print_r($twi);
}
}
}
}
?>
zelfde geld voor kanker. sommige mensen gebruiken het als een scheldwoord maar voor hetzelfde geld schrijft iemand iets over de genezing van kanker en word het gecensureerd.
Gewijzigd op 05/03/2012 16:15:55 door Albert de Wit
Albert de Wit op 05/03/2012 16:14:56:
offtopic: begonnen is niet echt een erg woord ofwel? :)
zelfde geld voor kanker. sommige mensen gebruiken het als een scheldwoord maar voor hetzelfde geld schrijft iemand iets over de genezing van kanker en word het gecensureerd.
zelfde geld voor kanker. sommige mensen gebruiken het als een scheldwoord maar voor hetzelfde geld schrijft iemand iets over de genezing van kanker en word het gecensureerd.
Begonnen was gewoon even een test, dat woord kwam voor in een tweet en wou kijken of hij het de tweet weg liet. En in de vorm waar ik de tweets worden weergegeven zijn deze tweets niet echt van toepassing, en daar bij komt dat ik het script nog verder wil uitwerken met een mail dus al er iets geweigerd word dat hij een mail stuurt met de tweets en dan kan ik de tweet er alsnog handmatig doordrukken.
Maar je hebt geen oplossing voor de fout?
neej, anders zou ik wel ontopic: + de oplossig schrijven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
for ($i=1; $i < $rpp; $i++) {
foreach ($bad as $b) {
if ($error == false) {
$search = "http://search.twitter.com/search.atom?q=%23".$q."&rpp=1";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
if (strpos($twi, $b)) {
$error = true;
}else{
print_r($twi);
}
}
}
?>
Je gaat nu voor elk woord in de array die curl uitvoeren.
for ($i=1; $i < $rpp; $i++) {
foreach ($bad as $b) {
if ($error == false) {
$search = "http://search.twitter.com/search.atom?q=%23".$q."&rpp=1";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
if (strpos($twi, $b)) {
$error = true;
}else{
print_r($twi);
}
}
}
?>
Je gaat nu voor elk woord in de array die curl uitvoeren.
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
81
82
83
84
85
86
87
88
89
90
91
92
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
81
82
83
84
85
86
87
88
89
90
91
92
<?php
header("Content-Type: application/xml;");
$bad = array(
'hoeren',
'kanker',
'tyfus',
'smerig',
'poep',
'poepen',
'schijt',
'tering',
'godverdomme',
'lelijk'
);
$return = '';
if (!isset($_GET['q'])) {
$q = 'rollcomm';
}else {
$q = $_GET['q'];
}
if (!isset($_GET['rpp'])) {
$rpp = 10;
}else {
$rpp = $_GET['rpp'];
}
$search = "http://search.twitter.com/search.atom?q=%23".urlencode($q)."&rpp=10";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
$twii = explode('<entry>', $twi);
$error = 0;
if ($rpp > (count($twii)-1)) {
$max = (count($twii)-1);
}else{
$max = $rpp;
}
if ($max != 0) {
if (isset($_GET['exit'])) {
$return .= $twii[0];
}
for ($i=1; $i < $max; $i++) {
foreach ($bad as $b) {
if (@strpos($twii[$i], $b)) {
$error = 1;
}
}
if ($error == 0) {
if (!isset($_GET['exit'])) {
$return .= $twii[0];
$return .= '<entry>';
$return .= $twii[$i];
$return .= '</feed>
';
exit;
}else{
$return .= '<entry>';
$return .= @$twii[$i];
}
}
$error = 0;
}
if (isset($_GET['exit'])) {
$return .= '</feed>
';
}
}else{
$return .= '<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/" xmlns:georss="http://www.georss.org/georss">
<id>tag:search.twitter.com,2005:search/zoek</id>
<link type="text/html" href="http://search.twitter.com/search?q=%23zoek" rel="alternate"/>
<link type="application/atom+xml" href="http://search.twitter.com/search.atom?q=%23zoek" rel="self"/>
<title>#zoek - Twitter Search</title>
<link type="application/opensearchdescription+xml" href="http://twitter.com/opensearch.xml" rel="search"/>
<link type="application/atom+xml" href="http://search.twitter.com/search.atom?since_id=175989085415014400&q=%23zoek" rel="refresh"/>
<updated>2012-03-03T17:00:42Z</updated>
<openSearch:itemsPerPage>10</openSearch:itemsPerPage>
</feed>
';
}
echo $return;
?>
header("Content-Type: application/xml;");
$bad = array(
'hoeren',
'kanker',
'tyfus',
'smerig',
'poep',
'poepen',
'schijt',
'tering',
'godverdomme',
'lelijk'
);
$return = '';
if (!isset($_GET['q'])) {
$q = 'rollcomm';
}else {
$q = $_GET['q'];
}
if (!isset($_GET['rpp'])) {
$rpp = 10;
}else {
$rpp = $_GET['rpp'];
}
$search = "http://search.twitter.com/search.atom?q=%23".urlencode($q)."&rpp=10";
$tw = curl_init();
curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
$twii = explode('<entry>', $twi);
$error = 0;
if ($rpp > (count($twii)-1)) {
$max = (count($twii)-1);
}else{
$max = $rpp;
}
if ($max != 0) {
if (isset($_GET['exit'])) {
$return .= $twii[0];
}
for ($i=1; $i < $max; $i++) {
foreach ($bad as $b) {
if (@strpos($twii[$i], $b)) {
$error = 1;
}
}
if ($error == 0) {
if (!isset($_GET['exit'])) {
$return .= $twii[0];
$return .= '<entry>';
$return .= $twii[$i];
$return .= '</feed>
';
exit;
}else{
$return .= '<entry>';
$return .= @$twii[$i];
}
}
$error = 0;
}
if (isset($_GET['exit'])) {
$return .= '</feed>
';
}
}else{
$return .= '<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/" xmlns:georss="http://www.georss.org/georss">
<id>tag:search.twitter.com,2005:search/zoek</id>
<link type="text/html" href="http://search.twitter.com/search?q=%23zoek" rel="alternate"/>
<link type="application/atom+xml" href="http://search.twitter.com/search.atom?q=%23zoek" rel="self"/>
<title>#zoek - Twitter Search</title>
<link type="application/opensearchdescription+xml" href="http://twitter.com/opensearch.xml" rel="search"/>
<link type="application/atom+xml" href="http://search.twitter.com/search.atom?since_id=175989085415014400&q=%23zoek" rel="refresh"/>
<updated>2012-03-03T17:00:42Z</updated>
<openSearch:itemsPerPage>10</openSearch:itemsPerPage>
</feed>
';
}
echo $return;
?>
Gewijzigd op 06/03/2012 10:14:41 door DirkJan Heinen