[opgelost] Problemen met imagestring etc.
Ik weet niet precies hoe ik het moet noemen, vandaar dat de titel een beetje raar is.
Gisteren had ik hulp gevraagd, betreft het lezen/ophalen van bepaalde stukjes tekst.
http://www.phphulp.nl/php/forum/topic/informatie-ophalen-van-andere-website-probleem/93276/#668535
Ik heb het met een rare omweg in het "imagestring" gekregen, maar stuit op het volgende probleem :
(je kan het denk ik wel zien, wat de fouten zijn)
- Voor elke regel staat een gek/apart tekentje
- bij gezondheid staat normaal gesproken een gezonheidsbalkje, en blijkbaar is die vervangen naar " ".
Iemand een idee hoe dat komt, en hoe ik dat weg krijg?
mijn banner.php :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
header("Content-Type: image/png");
$afb = imagecreatefrompng("http://www.rmhproductions.nl/test/ledenbg.png");
$im = @imagecreate(300, 150)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 51, 204, 255);
$text_color = imagecolorallocate($im, 51,204,255);
$white = imagecolorallocate($afb, 255, 255, 255);
imagestring($afb,21, 20, 10, file_get_contents('http://www.rmhproductions.nl/test/index.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 25, file_get_contents('http://www.rmhproductions.nl/test/power.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 40, file_get_contents('http://www.rmhproductions.nl/test/rank.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 55, file_get_contents('http://www.rmhproductions.nl/test/getrouwd.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 70, file_get_contents('http://www.rmhproductions.nl/test/familie.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 85, file_get_contents('http://www.rmhproductions.nl/test/gezond.php?user='.$_GET['user'].''), $white);
imagepng($afb);
imagedestroy($afb);
?>
header("Content-Type: image/png");
$afb = imagecreatefrompng("http://www.rmhproductions.nl/test/ledenbg.png");
$im = @imagecreate(300, 150)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 51, 204, 255);
$text_color = imagecolorallocate($im, 51,204,255);
$white = imagecolorallocate($afb, 255, 255, 255);
imagestring($afb,21, 20, 10, file_get_contents('http://www.rmhproductions.nl/test/index.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 25, file_get_contents('http://www.rmhproductions.nl/test/power.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 40, file_get_contents('http://www.rmhproductions.nl/test/rank.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 55, file_get_contents('http://www.rmhproductions.nl/test/getrouwd.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 70, file_get_contents('http://www.rmhproductions.nl/test/familie.php?user='.$_GET['user'].''), $white);
imagestring($afb, 21, 20, 85, file_get_contents('http://www.rmhproductions.nl/test/gezond.php?user='.$_GET['user'].''), $white);
imagepng($afb);
imagedestroy($afb);
?>
Ik heb voor elke regel die in de afbeelding moet komen, een file_get_contents gebruikt,
op vele andere manieren crashed alsware de afbeelding (veranderd in allemaal rare tekentjes).
Heeft denk ik te maken met de echo, maar weet ik niet zeker.
Stel dat ik naar :
http://www.rmhproductions.nl/test/index.php?user=sulanum , zou gaan, is er geen html zichtbaar en / of die rare tekentje, dus heeft denk ik te maken met de banner.php.
Alvast bedankt.
Groeten,
Marco
Gewijzigd op 18/12/2013 12:10:58 door Chris -
Je kunt deze vervangen door niks met str_replace()
Mijn code in het vorige topic hieronder aangepast
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
/* De gebruiker waarvan je de gegevens wilt ophalen */
if(!isset($_GET['user'])){$_GET['user'] = 'sulanum';}
/* Pagina ophalen en opslaan in $handle */
$handle = file_get_contents('http://www.secretcrime.nl/member/' . htmlspecialchars($_GET['user'], ENT_QUOTES));
/* Alles tussen <td> en </td> opslaan in $result */
if(isset($handle)){
preg_match_all('|<td[^>]*?>(.*?)</td>|si', $handle, $result);
}
/* De velden die we willen hebben */
/* Gebruikersnaam, Gezondheid, Power, Land, Getrouwd met, Geld (contant), Geld (bank), Geld (kluis), Familie, Geslacht, Rank, Respectpunten, Bescherming, Vakantie, Lid sinds, Aangebracht door, Laatst online, Attacks gewonnen, Attacks verloren, Aantal vermoord, Voltooide missies */
$fields = Array('Gebruikersnaam','Power','Rank','Getrouwd met','Gezondheid','Familie');
if(isset($result)){
foreach($result[0] AS $key=>$val){
$val = strip_tags($val); // Html verwijderen
if(strlen($val) > 0 && array_keys($fields, $val)){ // Als waarde in $fields voorkomt...
$array[$val] = str_replace(' ','',strip_tags($result[0][$key+2])); // opslaan in $array()
}
}
}
/* Deze velden weergeven */
if(isset($array)){
header("Content-Type: image/png");
$afb = imagecreatefrompng("img/ledenbg.png");
$white = imagecolorallocate($afb, 255, 255, 255);
imagestring($afb,21, 20, 10, 'Gebruikersnaam: ' . $array['Gebruikersnaam'], $white);
imagestring($afb, 21, 20, 25, 'Power: ' . $array['Power'], $white);
imagestring($afb, 21, 20, 40, 'Rank: ' . $array['Rank'], $white);
imagestring($afb, 21, 20, 55, 'Getrouwd met: ' . $array['Getrouwd met'], $white);
imagestring($afb, 21, 20, 70, 'Gezondheid: ' . $array['Gezondheid'], $white);
imagestring($afb, 21, 20, 85, 'Familie: ' . $array['Familie'], $white);
imagepng($afb);
imagedestroy($afb);
} else {
echo 'Gebruiker niet gevonden';
}
?>
/* De gebruiker waarvan je de gegevens wilt ophalen */
if(!isset($_GET['user'])){$_GET['user'] = 'sulanum';}
/* Pagina ophalen en opslaan in $handle */
$handle = file_get_contents('http://www.secretcrime.nl/member/' . htmlspecialchars($_GET['user'], ENT_QUOTES));
/* Alles tussen <td> en </td> opslaan in $result */
if(isset($handle)){
preg_match_all('|<td[^>]*?>(.*?)</td>|si', $handle, $result);
}
/* De velden die we willen hebben */
/* Gebruikersnaam, Gezondheid, Power, Land, Getrouwd met, Geld (contant), Geld (bank), Geld (kluis), Familie, Geslacht, Rank, Respectpunten, Bescherming, Vakantie, Lid sinds, Aangebracht door, Laatst online, Attacks gewonnen, Attacks verloren, Aantal vermoord, Voltooide missies */
$fields = Array('Gebruikersnaam','Power','Rank','Getrouwd met','Gezondheid','Familie');
if(isset($result)){
foreach($result[0] AS $key=>$val){
$val = strip_tags($val); // Html verwijderen
if(strlen($val) > 0 && array_keys($fields, $val)){ // Als waarde in $fields voorkomt...
$array[$val] = str_replace(' ','',strip_tags($result[0][$key+2])); // opslaan in $array()
}
}
}
/* Deze velden weergeven */
if(isset($array)){
header("Content-Type: image/png");
$afb = imagecreatefrompng("img/ledenbg.png");
$white = imagecolorallocate($afb, 255, 255, 255);
imagestring($afb,21, 20, 10, 'Gebruikersnaam: ' . $array['Gebruikersnaam'], $white);
imagestring($afb, 21, 20, 25, 'Power: ' . $array['Power'], $white);
imagestring($afb, 21, 20, 40, 'Rank: ' . $array['Rank'], $white);
imagestring($afb, 21, 20, 55, 'Getrouwd met: ' . $array['Getrouwd met'], $white);
imagestring($afb, 21, 20, 70, 'Gezondheid: ' . $array['Gezondheid'], $white);
imagestring($afb, 21, 20, 85, 'Familie: ' . $array['Familie'], $white);
imagepng($afb);
imagedestroy($afb);
} else {
echo 'Gebruiker niet gevonden';
}
?>
Michael - op 18/12/2013 11:21:51:
is een spatie. Deze staat gewoon in de string van 'Power', maar in html wordt deze niet weergegeven. Wel als je deze op een afbeelding gaat plaatsen.
Je kunt deze vervangen door niks met str_replace()
Je kunt deze vervangen door niks met str_replace()
Bedankt voor je hulp! Ook erg overzichtelijk.
Wat was eigenlijk het probleem van die rare tekentjes voor de zinnen?
Gewijzigd op 18/12/2013 11:51:38 door Marco Eilander
Wat bedoel je? Ik krijg je afbeelding gewoon te zien hoor.
Michael - op 18/12/2013 11:46:25:
Wat bedoel je? Ik krijg je afbeelding gewoon te zien hoor.
Je was mij net voor :P
Marco Eilander op 18/12/2013 11:44:08:
Bedankt voor je hulp! Ook erg overzichtelijk.
Wat was eigenlijk het probleem van die rare tekentjes voor de zinnen?
Wat was eigenlijk het probleem van die rare tekentjes voor de zinnen?
Graag gedaan!
Niet zozeer een probleem. Er wordt bij de Power gewoon een spatie voor gezet (voor de afstand tussen het plaatje en de percentage). Zie code van de pagina
<span class="rankbar_text"> 100%</span></td>
Gewijzigd op 18/12/2013 12:02:01 door Michael -