Quote in BB
| Pagina 2
63 antwoorden
Gesponsorde links
Voldemort - 22/07/2006 15:23
PHP ver gevorderde
Is er geen enkele PHP functie die een image kan verkleinen naar een gewenste breedte en de hoogte automatisch meeveranderd zodat het niet verwrongen is? Is er een andere oplossing?
Richard - 22/07/2006 15:26
Crew algemeen
nope, alleen javascript
Voldemort - 22/07/2006 15:50
PHP ver gevorderde
En hoe gaat het in Javascript?
Richard - 22/07/2006 15:53 (laatste wijziging 22/07/2006 15:54)
Crew algemeen
Google
Voldemort - 22/07/2006 17:43 (laatste wijziging 26/07/2006 12:19)
PHP ver gevorderde
Vraag 1: Ik dacht plots als ik de hoogte en breedte met hetzelfde getal laat delen dat het ook wel zo lukken en dat lukte. Het resultaat dit dit:
http://www.plaatscode.be/1488 /
Ik breid het binnenkort uit (zorgen dat er ook met de height kan gewerkt worden en als het me lukt dat je ook beide kan instellen en is_file checks enzo) en voeg het toe aan de scripts hier ;).
Edit: Hoe kan ik aan het url van de image raken? Ik heb nu dit:
$url = preg_replace('#\[img\](http://)(.*?)\[/img\]#i','\\1\\2', $tekst);
$url = preg_replace ( '#\[img\](http://)(.*?)\[/img\]#i' , '\\1\\2' , $tekst ) ;
Alleen krijg ik dan het volledige bericht dat met die class moet geparst worden (de inhoud van $tekst dus). Hoe raak ik aan het url van de image? Ik gebruik maar 1 vorm van de img-tag:
[img]http://www.server.com/image.jpg[/img]
[ img] http: //www.server.com/image.jpg[/img]
Die andere met [img=] laat ik eruit weg.
Vraag 2: Ik heb een vraagje met de verkorte schrijfwijze:
Is een ; na de variable eigenlijk verplicht? Bij mijn scripts die ik nu met PHP 4 draai maakt het niet uit of er een ; of niet, maar ik weet niet hoe het zit met PHP 5 en hoe het eigenlijk echt zou moeten.
Ibrahim - 25/07/2006 21:40
PHP expert
Vraag 1:
doe dan preg_match('je regex', $text, $matches);
var_dump die matches, en kijk dan of je die url ziet, probeer wat !
Vraag 2:
hetzelfde: als je had geprobeerd, zou je weten dat bij die shorttags niet verplicht is om een ; erachter te zetten.
Voldemort - 26/07/2006 12:19 (laatste wijziging 28/07/2006 19:36)
PHP ver gevorderde
Vraag 1: Met preg_match werkt het.
Edit: Als de image niet bestaat wil ik dit weergeven: [Image bestaat niet] of iets dergelijks, tekst dus. Want anders geeft getimagesize een warning error (dat het de info van de image niet kan ophalen). "is_link" en "file_exists" als check werken niet. Hoe moet het wel? Met fsockopen?
Edit 2: Niemand?
Vraag 2: Ik heb geprobeerd en het werkte beide, maar omdat vroeger dit eens deed:
html
<?php
include('map/bestand.php')
?>
html
html
<?php
include ( 'map/bestand.php' )
?>
html
En dat werkte ook. Daarom zou ik gewoon even willen weten of het ook nog werkt in PHP versie hoger dan 4.
webstab - 28/07/2006 20:02 (laatste wijziging 28/07/2006 20:03)
PHP ver gevorderde
Citaat:
Is er geen enkele PHP functie die een image kan verkleinen naar een gewenste breedte en de hoogte automatisch meeveranderd zodat het niet verwrongen is? Is er een andere oplossing?
Misschien wat laat, maar je kan het mss zo proberen.
<?php
$maxWidth = 100;
list($width, $height, $type, $attr) = getimagesize($image);
if ($width > $maxWidth)
{
$value = "<img style=\"width: ".$maxWidth."px;\" src=\"".$image."\" alt=\"\" />";
} else {
$value = "<img src=\"".$image."\" alt=\"\" />";
}
echo $value;
<?php
$maxWidth = 100 ;
if ( $width > $maxWidth )
{
$value = "<img style=\" width: " . $maxWidth . "px;\" src=\" " . $image . "\" alt=\" \" />" ;
} else {
$value = "<img src=\" " . $image . "\" alt=\" \" />" ;
}
Maarten - 28/07/2006 20:32
Erelid
webstab, dat vraagt hij niet, dat is geen resize, dat is gewoon de grootte verkleinen met HTML, dan is de kwaliteit ook ferm verkleind. De methode die hij nu gebruikt is juist, gewoon delen door hetzelfde getal.
Voldemort - 29/07/2006 14:05
PHP ver gevorderde
Als de image niet bestaat wil ik dit weergeven: [Image bestaat niet] of iets dergelijks, tekst dus. Want anders geeft getimagesize een warning error (dat het de info van de image niet kan ophalen). "is_link" en "file_exists" als check werken niet. Hoe moet het wel? Met fsockopen?
Richard - 29/07/2006 14:06
Crew algemeen
zet een @ voor getimagesize, en kijk of de resultaten die hij teruggeeft kloppen...
Voldemort - 29/07/2006 14:42
PHP ver gevorderde
@ is een lelijke functie, is er geen manier zonder fouten te onderdrukken?
Richard - 29/07/2006 14:44
Crew algemeen
de @ is bedoeld voor dit soort dingen, je kunt ook gewoon de @ weglaten, maar dan hou je de foutmelding
Voldemort - 29/07/2006 17:58 (laatste wijziging 29/07/2006 17:59)
PHP ver gevorderde
Ik zal het dan met @ doen, dit werkt namelijk wel. Maar nu wou ik kleurtjes inbouwen, code:
http://www.plaatscode.be/1593 /
Gebruik:
Citaat:
[color=rood]Rode tekst[/color]
[color=groen]Groene tekst[/color]
[color=oranje]Oranje tekst[/color]
Output met bovenstaande code (html):
<span class="red">Rode tekst</span><br />
<span class="red">Groene tekst</span><br />
<span class="red">Oranje tekst</span>
< span class = "red" > Rode tekst</ span>< br />
< span class = "red" > Groene tekst</ span>< br />
< span class = "red" > Oranje tekst</ span>
Bedoelde output (html):
<span class="red">Rode tekst</span><br />
<span class="green">Groene tekst</span><br />
<span class="orange">Oranje tekst</span>
< span class = "red" > Rode tekst</ span>< br />
< span class = "green" > Groene tekst</ span>< br />
< span class = "orange" > Oranje tekst</ span>
Ik zie de fout niet meteen.
Voldemort - 29/07/2006 18:06 (laatste wijziging 29/07/2006 20:03)
PHP ver gevorderde
Zo dan?
switch($matches[1])
{
case 'rood':
$class = 'red';
break;
case 'groen':
$class = 'green';
break;
case 'oranje':
$class = 'orange';
break;
default:
$class = '';
}
switch ( $matches [ 1 ] )
{
case 'rood' :
$class = 'red' ;
break ;
case 'groen' :
$class = 'green' ;
break ;
case 'oranje' :
$class = 'orange' ;
break ;
default :
$class = '' ;
}
Veranderd niks. Het werkt nog steeds niet.
Richard - 30/07/2006 09:10
Crew algemeen
Ik zie zo gauw geen fouten hierin, maar ik zie wel iets dat je server mogelijk neer kan halen. Je loopt net zo lang dat de regex valid is, maar je replaced alleen als de kleur goed is. Als ik nou gewoon een tag neerzet met een foute kleur, zal de while in principe eeuwig doorgaan...
Voldemort - 30/07/2006 10:23
PHP ver gevorderde
Hoe moet het dan wel?
Simon - 30/07/2006 10:23
PHP expert
waarom moet dat per sé met een while loop
<?php
function parse_color($tekst)
{
$tekst = preg_replace('#\[color=rood\](.*?)\[/color\]#si','<span class="red">\\1</span>', $tekst);
$tekst = preg_replace('#\[color=groen\](.*?)\[/color\]#si','<span class="green">\\1</span>', $tekst);
$tekst = preg_replace('#\[color=oranje\](.*?)\[/color\]#si','<span class="orange">\\1</span>', $tekst);
return $tekst;
}
?>
<?php
function parse_color( $tekst )
{
$tekst = preg_replace ( '#\[color=rood\](.*?)\[/color\]#si' , '<span class="red">\\1</span>' , $tekst ) ; $tekst = preg_replace ( '#\[color=groen\](.*?)\[/color\]#si' , '<span class="green">\\1</span>' , $tekst ) ; $tekst = preg_replace ( '#\[color=oranje\](.*?)\[/color\]#si' , '<span class="orange">\\1</span>' , $tekst ) ; return $tekst ;
}
?>
gewoon zo kan toch ook?
Ibrahim - 30/07/2006 21:16 (laatste wijziging 30/07/2006 21:16)
PHP expert
nja, dat kan ook simon, maar is dat nou echt handig ? voor elke kleur zon regel tikken. Hier heb ik een klein functie geschreven, net, want ik ben dat gevraag naar dit beu
<?php
function parse_color($tekst)
{
$kleurenArray = array(
'rood' => 'red',
'groen' => 'green',
'oranje' => 'orange'
);
foreach($kleurenArray as $dutch => $english)
{
if(preg_match_all('~\[color='.$dutch.'](.*?)\[/color]~si', $tekst, $matches))
{
$tekst = preg_replace('~\[color='.$dutch.'](.*?)\[/color]~si', '<font color="'.$english.'">\\1</font>', $tekst);
}
}
if(preg_match_all('~\[color=(.*?)](.*?)\[/color]~si', $tekst, $matches))
{
$tekst = preg_replace('~\[color=(.*?)](.*?)\[/color]~si', '<font color="\\1">\\2</font>', $tekst);
}
return $tekst;
}
<?php
function parse_color( $tekst )
{
'rood' => 'red' ,
'groen' => 'green' ,
'oranje' => 'orange'
) ;
foreach ( $kleurenArray as $dutch => $english )
{
if ( preg_match_all ( '~\[color=' . $dutch . '](.*?)\[/color]~si' , $tekst , $matches ) ) {
$tekst = preg_replace ( '~\[color=' . $dutch . '](.*?)\[/color]~si' , '<font color="' . $english . '">\\1</font>' , $tekst ) ; }
}
if ( preg_match_all ( '~\[color=(.*?)](.*?)\[/color]~si' , $tekst , $matches ) ) {
$tekst = preg_replace ( '~\[color=(.*?)](.*?)\[/color]~si' , '<font color="\\1">\\2</font>' , $tekst ) ; }
return $tekst ;
}
Simon - 30/07/2006 21:21
PHP expert
@siliecom, ik vind het mijne beter dan het jouwe hoor, het is minder code en de kleurencodes intypen blijft evenveel werk...
Ibrahim - 30/07/2006 21:38 (laatste wijziging 30/07/2006 21:38)
PHP expert
ja maar de jouwe ondersteunt alleen de kleuren die je intikt, mijne ook #FFFFFF enz.
Voldemort - 30/07/2006 21:46 (laatste wijziging 30/07/2006 21:57)
PHP ver gevorderde
@siliecom14: Ik ga de jouwe gebruiken, die vind ik handiger (met die array is het gemakkelijker uit te breiden en die eigen kleuren ook).
Edit: Als ik bij deze code:
if(preg_match_all('~\[color=(.*?)](.*?)\[/color]~si', $tekst, $matches))
{
$tekst = preg_replace('~\[color=(.*?)](.*?)\[/color]~si', '<font color="\\1">\\2</font>', $tekst);
}
if ( preg_match_all ( '~\[color=(.*?)](.*?)\[/color]~si' , $tekst , $matches ) ) {
$tekst = preg_replace ( '~\[color=(.*?)](.*?)\[/color]~si' , '<font color="\\1">\\2</font>' , $tekst ) ; }
Ook nog een check wil of hegene na [color= wel een echte hexadecimale kleur is, hoe gaat dat dan (want als ik [color=color]Test[/color] doe is het niet meer XHTML valid)? Ik heb geprobeerd met ^\#(.*?), alleen doet die het niet en moest je dan typen #ZZZZZZ zou het ook goed zijn terwijl dit niet hexadecimaal is. Is er een methoden om dit te checken?
Richard - 31/07/2006 12:59 (laatste wijziging 31/07/2006 13:07)
Crew algemeen
<?php
function parse_color ($text)
{
return preg_replace ('~\[color=(#(?:[a-f0-9]{3}){1,2}|[a-z]+)](.+?)\[/color]~is', '<span style="color: \1;">\2</span>', $text);
}
<?php
function parse_color ( $text )
{
return preg_replace ( '~\[color=(#(?:[a-f0-9]{3}){1,2}|[a-z]+)](.+?)\[/color]~is' , '<span style="color: \1;">\2</span>' , $text ) ; }
dit is eigelijk wel voldoende. hoewel je ook verkeerde kleuren (grokl) bijv. kunt invoeren, is dit echt voldoende.
Voldemort - 31/07/2006 13:19 (laatste wijziging 31/07/2006 13:20)
PHP ver gevorderde
Ik heb nu deze code:
<?php
function parse_color($tekst)
{
$kleuren = array('rood' => 'red',
'groen' => 'green',
'oranje' => 'orange',
'roze' => 'roze',
'paars' => 'purple',
'geel' => 'yellow',
'blauw' => 'blue',
'zwart' => 'black',
'lblauw' => 'lblue',
'lgroen' => 'lgreen');
foreach($kleuren as $name => $class)
{
if(preg_match('~\[color='.$name.'](.*?)\[/color]~si', $tekst, $matches))
{
$tekst = preg_replace('~\[color='.$name.'](.*?)\[/color]~si', '<span class="'.$class.'">\\1</span>', $tekst);
}
}
if(preg_match('~\[color=(.*?)](.*?)\[/color]~si', $tekst, $matches))
{
$hex = substr($matches[1],1);
if(ctype_xdigit($hex))
$tekst = preg_replace ('~\[color=(#(?:[a-f0-9]{3}){1,2}|[a-z]+)](.+?)\[/color]~is', '<span style="color: \1;">\2</span>', $tekst);
}
return $tekst;
}
?>
<?php
function parse_color( $tekst )
{
$kleuren = array ( 'rood' => 'red' , 'groen' => 'green' ,
'oranje' => 'orange' ,
'roze' => 'roze' ,
'paars' => 'purple' ,
'geel' => 'yellow' ,
'blauw' => 'blue' ,
'zwart' => 'black' ,
'lblauw' => 'lblue' ,
'lgroen' => 'lgreen' ) ;
foreach ( $kleuren as $name => $class )
{
if ( preg_match ( '~\[color=' . $name . '](.*?)\[/color]~si' , $tekst , $matches ) ) {
$tekst = preg_replace ( '~\[color=' . $name . '](.*?)\[/color]~si' , '<span class="' . $class . '">\\1</span>' , $tekst ) ; }
}
if ( preg_match ( '~\[color=(.*?)](.*?)\[/color]~si' , $tekst , $matches ) ) {
$tekst = preg_replace ( '~\[color=(#(?:[a-f0-9]{3}){1,2}|[a-z]+)](.+?)\[/color]~is' , '<span style="color: \1;">\2</span>' , $tekst ) ; }
return $tekst ;
}
?>
En deze werkt heel goed. Iedereen bedankt!
Richard - 31/07/2006 13:27
Crew algemeen
die onderste preg_match if kun je compleet vervangen door alleen die preg_replace, die doet precies dezelfde controles als jij wilt.
Richard - 31/07/2006 14:27
Crew algemeen
Wat bedoel je daarmee?:p
Gesponsorde links
Dit onderwerp is gesloten .