1 2 3 4 5 6 | |ID|Catagorie| +--+---------+ |1 |Eten | |2 |Sport | |3 |Studie | |4 |etc, etc | |
1 2 3 4 5 6 7 | |ID|Catagorie|Item |Naam | +--+---------+---------+------+ |1 |Eten |Montignac|Arie | |2 |Sport |Voetbal! |Tinus | |3 |Studie |PHP |Kees | |4 |Eten |Moermans |Bertus| |5 |etc |etc |etc | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $query="SELECT * FROM catagorie"; $result=mysql_query($query); while($row=mysql_fetch_assoc($result)){ echo"<div>".$row[catagorie]."<br />"; $query_item="SELECT * FROM item WHERE catgorie='".$row['catgorie']."' LIMIT 3"; $result_item=mysql_query($query_item); while($record=mysql_fetch_assoc($result_item)){ echo $record[item]."<br />"; } echo"</div>"; } ?> |
Volgens mij haal ik dan gewoon de laatste 3 records van 1 categorie uit de tabel. EN ik moet 17 maal de laatste 3 hebben.quote:Op woensdag 28 september 2005 20:46 schreef Nevermind het volgende:
Volgens mij kun je het in één query doen door een LEFT JOIN te doen op `Catagorie`.
stiekem heb ik helemaal geen tabel catagorie of categorie, maar heeft deze een compleet andere naam. Dit was echter makkelijker uitleggenquote:categorie overigens?
Subqueries zijn vanaf mysql 4.1 mogenlijk.quote:Op woensdag 28 september 2005 20:50 schreef Chandler het volgende:
best pittig trouwens, kun je ook queries in queries doen? anders lijkt me dit heel erg omslachtig en zul je idd aan die 18 queries blijven zitte
1 2 3 4 5 6 7 | SELECT c.CategoryID, c.CategoryName, p.ProductID, p.ProductName FROM products p INNER JOIN categories c ON c.CategoryID = p.categoryID INNER JOIN products p2 ON p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName GROUP BY p.ProductID, p.ProductName, c.CategoryID, c.CategoryName HAVING COUNT(p2.ProductID) <= 5 ORDER BY c.CategoryName, p.ProductName |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CategoryID CategoryName ProductID ProductName 1 Beverages 1 Chai 1 Beverages 2 Chang 1 Beverages 39 Chartreuse verte 1 Beverages 38 Côte de Blaye 1 Beverages 24 Guaraná Fantástica 2 Condiments 3 Aniseed Syrup 2 Condiments 4 Chef Anton's Cajun Seasoning 2 Condiments 5 Chef Anton's Gumbo Mix 2 Condiments 15 Genen Shouyu 2 Condiments 6 Grandma's Boysenberry Spread 3 Confections 48 Chocolade 3 Confections 26 Gumbär Gummibärchen 3 Confections 49 Maxilaku 3 Confections 25 NuNuCa Nuß-Nougat-Creme 3 Confections 16 Pavlova |
Ik ga 'm zometeen ff uitproberenquote:Op woensdag 28 september 2005 22:14 schreef SuperRembo het volgende:
bevat de producten die boven het product staan
Ja, hij is wat lastig om zo ff kort uit te leggen. Wat ook nog belangrijk is, is dat de joinconditie van de 2e products tabel (p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName) en de sortering van het resultaat (ORDER BY c.CategoryName, p.ProductName) bij elkaar horen. Misschien moet je zelf ff spelen met de query, en 'm eens uitvoeren met de COUNT(p2.ProductID) in 't resultaat of een keerte zonder group bij.quote:Op woensdag 28 september 2005 22:22 schreef Swetsenegger het volgende:
Sterker nog, ik begrijp geen moer van je query
Dat is om het kort en overzichtelijk te houden. Ik gebruik ook 2 x de tabel products, dus ik moet wel een alias gebruiken.quote:Even kijken, in ieder geval ga je met tabel aliassen werken.
Ai, ik hoopte dat dat bij het vereenvoudigde voorbeeld hoordequote:Hmz, eens even kijken hoe ik dat voor mijn probleem ga gebruiken. Plus ook dat ik in mijn tabel item niet de categorie id heb opgeslagen, maar echt de catagorie naam
Ja ik ben al aan het experimenteren, want het gaat niet helemaal goed.quote:Op woensdag 28 september 2005 22:35 schreef SuperRembo het volgende:
[..]
Ja, hij is wat lastig om zo ff kort uit te leggen. Wat ook nog belangrijk is, is dat de joinconditie van de 2e products tabel (p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName) en de sortering van het resultaat (ORDER BY c.CategoryName, p.ProductName) bij elkaar horen. Misschien moet je zelf ff spelen met de query, en 'm eens uitvoeren met de COUNT(p2.ProductID) in 't resultaat of een keerte zonder group bij.
[..]
Dat is om het kort en overzichtelijk te houden. Ik gebruik ook 2 x de tabel products, dus ik moet wel een alias gebruiken.
[..]
Ai, ik hoopte dat dat bij het vereenvoudigde voorbeeld hoorde
1 2 3 4 5 6 7 | SELECT g.genre, a.title, a.ad_id FROM genre g INNER JOIN ad a ON a.genre = g.genre INNER JOIN ad a2 ON a2.genre = g.genre AND a2.ad_id <= a.ad_id GROUP BY a.title HAVING COUNT(a2.ad_id) <= 3 ORDER BY g.genre, a.ad_id DESC |
1 2 3 4 5 6 7 | SELECT g.genre, a.title, a.ad_id FROM genre g INNER JOIN ad a ON a.genre = g.genre INNER JOIN ad a2 ON a2.genre = g.genre AND a.ad_id <= a2.ad_id GROUP BY a.title HAVING COUNT(a2.ad_id) <= 3 ORDER BY g.genre, a.ad_id DESC |
1 2 3 4 5 6 7 8 9 | SELECT c.CategoryID, c.CategoryName, p.ProductID, p.ProductName, FROM products p INNER JOIN categories c ON c.CategoryID = p.categoryID WHERE ( SELECT COUNT(*) FROM products p2 WHERE p2.CategoryID = c.CategoryID AND p2.ProductName <= p.ProductName ) <= 5 ORDER BY c.CategoryName, p.ProductName |
Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.quote:Op donderdag 29 september 2005 07:26 schreef Chandler het volgende:
SuperRembo, dat ziet er weer eens super Topf uit man!... wat een knowledge
Yups, ik dank ook veel aan hunquote:Op donderdag 29 september 2005 09:42 schreef Swetsenegger het volgende:
[..]
Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.
Ik zeg, we maken een walk of fame in de OPquote:Op donderdag 29 september 2005 10:16 schreef Darkomen het volgende:
[..]
Yups, ik dank ook veel aan hun
Van de tweakers heb ik ook een aantal keren goede suggesties gehad.quote:Op donderdag 29 september 2005 11:35 schreef JeRa het volgende:
Altijd baas boven baas, hepersoonlijk ga ik met PHP-problemen (if any) altijd op Fok! zoeken en problemen in andere talen vuur ik wel op Tweakers af
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 | <?php if($_GET['id'] == 'link') { include("link.php"); } elseif($_GET['id'] == 'news') { include("news.php"); } elseif($_GET['id'] == 'ticket') { include("ticket.php"); } elseif($_GET['id'] == 'contact') { include("contact.php"); } elseif($_GET['id'] == 'link_add') { include("link_add.php"); } elseif($_GET['id'] == 'link_edit') { include("link_edit.php"); } else { include("main.php"); } ?> |
1 2 3 4 5 6 7 8 9 10 | <?php $files = array("bestand1", "bestand2", "bestand3"); if(isset($_GET['file'] && in_array($_GET['file'], $files)){ include($_GET['file'] . ".php"); } else { include("main.php"); } ?> |
Of met een switchquote:Op vrijdag 30 september 2005 11:55 schreef Lamme_Sterfkanarie het volgende:
ik zou het trouwens zo oplossen:
[ code verwijderd ]
mogelijke bugs daargelaten, niet getest
je hebt nu trouwens ook 2x id in je url staan. dat gaat ook niet werken vandaar dat ik de eerste id hernoemd naar file heb.
1 | if(empty($bericht)) |
1 2 3 4 5 6 7 8 9 10 11 12 | <?php //Bericht in variabele stoppen $bericht = $_POST['bericht']; //Whitespaces voor en na het bericht weghalen $bericht = trim($bericht); //Check of het bericht wel is ingevuld (en een redelijke lengte heeft) if (strlen($bericht) < 6) { ... } ?> |
Best raar eing. want hier zou je toch minder / slechtere reacties verwachten hehe. Maar goed denk dat alleen maar de mensen met meer dan begin basis reageren dan daar op phpfreakz, daar is het een komen en gaan van ppl die snel ff hun oplossing willen weten (veel noobz) enzo, heb je hier nietquote:Op donderdag 29 september 2005 09:42 schreef Swetsenegger het volgende:
[..]
Het verbaast me altijd dat ik voor echt complexe queries en vraagstukken hier WEL een antwoord of een goed idee krijg van mensen als SuperRembo en Roonaan, terwijl op phpfreakz.nl, bij uitstek de php vraagbaak, meestal niet.
Het aanmaken van de directories gaat wel goed, ik kan alleen daarna niks meer met die mappen doen via een FTP programma, omdat ik de rechten niet heb. Kan ze niet weggooien, niks uploaden, niks aanpassen...quote:Op vrijdag 30 september 2005 18:40 schreef JeRa het volgende:
Die gallery gaat met de rechten van Apache draaien. Zorg er dus voor dat je in je script die directory aanmaakt en 'm goed chmod(). Dit hoef je als het goed is dus maar een keer te doen, en dan staan de rechten goed
Overigens, als je in FTP de rechten op 777 zet maakt het niet uit wat de gebruikersnaam is, want dan kan Apache er ook bij. Dan hoef je alleen nog maar te hopen dat je niet op een shared webhost zit waarbij iedereen kan rondkijken
Dan moet je die bestanden ná het uploaden en verplaatsen naar die directory ook de goede rechten (777 waarschijnlijk) geven. Dan kun je ze ook via FTP wijzigen/verwijderen/whatever. De rechten die je aan een directory geeft zijn namelijk alleen voor die node, de directory dus, van toepassingquote:Op vrijdag 30 september 2005 19:04 schreef wonderer het volgende:
[..]
Het aanmaken van de directories gaat wel goed, ik kan alleen daarna niks meer met die mappen doen via een FTP programma, omdat ik de rechten niet heb. Kan ze niet weggooien, niks uploaden, niks aanpassen...
Dat HAVING(COUNT()) gedoe, ik wist niet dat je dat als LIMIT kon gebruiken?quote:Op woensdag 28 september 2005 22:58 schreef Swetsenegger het volgende:
Ok Ik heb SR's query nu zover dat hij de EERSTE 3 per catagorie pakt
(Hij pakte eerst 'willekeurig' omdat ik op een title aan het sorteren wasDan krijg je gewoon de titels welke beginnen met A, vervolgens met B per categorie terug natuurlijk, dom dom dom
)
Nu nog de LAATSTE 3.
De query is nu dit (met de orignele tabel namen. genre is gelijk aan categorie en ad is gelijk aan item.)
[ code verwijderd ]
-edit
Swets..., de volgende keer ff dieper nadenken
[ code verwijderd ]
Bedankt voor het meedenken!
Ik kan ze al niet eens uploaden, laat staan veranderen. En ik heb juist mijn eigen gallery geschreven omdat ik het een voor een toevoegen van images zo irritant vond. Hij leest nou gewoon de directory uit.quote:Op vrijdag 30 september 2005 19:22 schreef JeRa het volgende:
[..]
Dan moet je die bestanden ná het uploaden en verplaatsen naar die directory ook de goede rechten (777 waarschijnlijk) geven. Dan kun je ze ook via FTP wijzigen/verwijderen/whatever. De rechten die je aan een directory geeft zijn namelijk alleen voor die node, de directory dus, van toepassingen niet op de onderliggende directories of bestanden.
Of je maakt natuurlijk een adminpanel in je gallery
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 | <?php function create_gallery($code,$name,$fotograaf,$email,$date,$user) { if(!is_dir($code)){ mkdir($code,0777); mkdir($code.'/images',0777); mkdir($code.'/thumbnails',0777); mkdir($code.'/caps',0777); $file=$code.'/header.txt'; copy('under.jpg',$code.'/thumbnails/first.jpg'); $entry=$name."\n"; if($email!=''){ $entry.='<a href="mailto:'.$email.'">'.$fotograaf.'</a>'."\n"; } else{ $entry.=$fotograaf."\n"; } $entry.=$date."\n"; $entry.=$user."\n"; if (!$handle = fopen($file, 'w+')) { $msg='Fout! Kan het bestand '.$file.' niet openen.'; exit; } if (!fwrite($handle, $entry)) { $msg='Fout! Kan het bestand '.$file.' niet beschrijven.'; exit; } fclose($handle); } else{ $msg='Deze galerie bestaat al, kies een andere naam!'; } return $msg; } ?> |
Ik gok dat dat niet van toepassing is op chmod()quote:The mode is also modified by the current umask, which you can change using umask().
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <title>Upload test form</title> </head> <body> <form action="getfile.php" method="post"><br> File: <input type="file" name="uploadFile"><br> <input type="submit" value="Upload File"> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 | <html> <head> <title>Upload test</title> </head> <body> <?php move_uploaded_file($_FILES['uploadFile'] ['tmp_name'], "../uploads/{$_FILES['uploadFile'] ['name']}") ?> </body> </html> |
bedankt. dat waren de twee fouten! het werkt nu!quote:Op zaterdag 1 oktober 2005 09:47 schreef SuperRembo het volgende:
Er horen in ieder geval geen spaties tussen $_FILES['uploadFile'] en ['tmp_name'].
Volgens mij hoort er nog enctype="multipart/form-data" in de form-tag.
Ik wil deze winnen eigenlijk, dus ik crosspost 'm hier.quote:Op zaterdag 1 oktober 2005 17:31 schreef Swetsenegger het volgende:
Voor de echte nerds
http://www.phpfreakz.nl/forum.php?forum=5&page=1
De kortste geldige oplossing staat op dit moment op 66 karakters. Standaard instellingen, dus Notices staan uit, super globals staan uit.quote:Beste PHP-ers,
--[ PHP Golf
Een nieuwe editie van PHP Golf!
--[ Wat is PHP Golf?
De bedoeling is een PHP script te maken met zo min mogelijk karakters.
Dus zo min mogelijk letters, nummers, spaties, newlines en dergelijke.
Met het script moet je een doelstelling bereiken.
We gaan ervan uit dat je de recenste PHP 4.x, op het moment 4.4,
versie hebt en standaard php.ini configuratie. Tenzij anders vermeld.
(Standaard: register_globals = off)
Het script moet op UNIX-gebaseerde en Windows systemen werken.
--[ Voor wie is PHP Golf?
De competitie is voor iedereen toegankelijk.
--[ Inzendingen
Je kunt je oplossing sturen naar:
phpgolf [at] gmail.com
(Disclaimer: je e-mail zal niet worden gebruikt voor
spam of worden doorgegeven aan derden)
--[ Doelstelling
Je moet de input veranderen in hoofdletters en in kleine letters, maar met
een twist. We gaan het camel-talk stijl doen. We gaan ervan uit dat de input
alleen uit A-Za-z bestaat. De input komt van een formulier vandaan.
Dit is het formulier:
1
2
3
4
5
6
7
8
9
10
11
12
13<html>
<head>
<title>PHP Golf #5</title>
</head>
<body>
<form method="POST" action="camel.php">
<input type="hidden" name="dummy">
<input type="text" name="string">
<input type="submit" name="submit">
</form>
</body>
</html>
Het doel is de input te veranderen in camel-style.
Voorbeeld input:
"PHPFreakz heeft een community"
output:
"PhPfReAkZ hEeFt EeN cOmMuNiTy"
De output moet beginnen met een hoofdletter. Iedere tweede letter is een
een hoofdletter. Spaties tellen dus niet mee als karakters (zie voorbeeld hierboven).
Nu mag jij camel.php programmeren en liefst zo kort mogelijk.
--[ Deadline:
De deadline is over 6 dagen.
Donderdag 19:00 6 oktober 2005
-----
Post in dit topic vragen/suggesties.
GEEN OPLOSSINGEN!
Mocht je een oplossing hebben, dan mag je gerust je karakter aantal posten.
Dit om andere te stimuleren![]()
Diegene die het minste karakters heeft gebruikt, wint!
Veel succes,
Tri Pham
1 2 3 | <?php preg_replace('/[a-z]+/ie', '\'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \')', $input); ?> |
Als je hier nou meteen naar het juiste topic had gelinkt, dan had ik 'm meteen gesnapt.quote:Op zaterdag 1 oktober 2005 17:31 schreef Swetsenegger het volgende:
Voor de echte nerds
http://www.phpfreakz.nl/forum.php?forum=5&page=1
Altijd userinput checkenquote:Op zondag 2 oktober 2005 13:00 schreef SuperRembo het volgende:
[..]
Als je hier nou meteen naar het juiste topic had gelinkt, dan had ik 'm meteen gesnapt.
Vanavond weer eens kijken, maar 66 tekens is echt bizar weinig.quote:Op zondag 2 oktober 2005 13:18 schreef SuperRembo het volgende:
Ik zit nu op 9177 tekens met een preg_replace, 103102 tekens met een loop.
Nog een flinke weg te gaan naar de 66 (of minder tekens)
Dan moet er wel weer een ; achter. Dan zit ik nu op 67.quote:Op zondag 2 oktober 2005 15:31 schreef Swetsenegger het volgende:
[..]
Vanavond weer eens kijken, maar 66 tekens is echt bizar weinig.
niet vergeten dat je de laatste ?> mag weglaten he
Dat zal ik maar doen.quote:Op zondag 2 oktober 2005 15:38 schreef SuperRembo het volgende:
[..]
Dan moet er wel weer een ; achter. Dan zit ik nu op 67.
63!
Zal dan maar ff reggen op dat forum
notices staan standaard uit, en is dus geldigquote:Op zondag 2 oktober 2005 15:43 schreef SuperRembo het volgende:
Ik krijg wel 2 + (aantal niet-spaties) notices
Maar dat lukt me niet, en deze:quote:Replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one. Every such reference will be replaced by the text captured by the n'th parenthesized pattern. n can be from 0 to 99, and \\0 or $0 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern.
Zal toch ook enig lucht moeten geven in het aantal gebruikte karakters.quote:The precise effect of "\cx" is as follows: if "x" is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus "\cz" becomes hex 1A, but "\c{" becomes hex 3B, while "\c;" becomes hex 7B.
1 2 3 | $a=$_POST['string'];for($b=0;$b<strlen($a);$b++){$c=ord(substr($a,$b,1)); if($c!=32){$e++;$g=($e%2!=0)?(($c<91)?chr($c):chr($c-32)):(($c<91)?chr($c+32): chr($c));$f.=$g;}else{$f.=" ";}}echo $f; |
1 2 3 | $a=$_POST['string'];for($b=0;$b<strlen($a);$b++){$c=substr($a,$b,1); if($c!=" "){$d.=($e%2==0)?strtoupper($c):strtolower($c);$e++;}else $d.=" ";} echo $d; |
Ik ben er ook niet goed in, maar je leert er wel een hoop handiheidjes meequote:Op zondag 2 oktober 2005 18:14 schreef Nevermind het volgende:
Dankje, de accollades had ik ook net bedacht, en daarmee kom ik op 133. Nu verder met ? :
Erg leuk om te doen trouwens, ook al ben ik er niet erg goed in
-edit- 124
quote:Op zondag 2 oktober 2005 17:54 schreef SuperRembo het volgende:
In plaats van $c=substr($a,$b,1) zou je $c=$a{$b} kunnen gebruiken.
Inderdaad, bedankt voor de tip trouwensquote:Op zondag 2 oktober 2005 18:18 schreef Swetsenegger het volgende:
[..]
Ik ben er ook niet goed in, maar je leert er wel een hoop handiheidjes mee
De verkorte if notatie bijvoorbeeld
1 2 | $a=$_POST[string];for($c=0;$c<strlen($a);print($a{$c}!=" " ?$c%2==0?strtoupper($a{$c}):strtolower($a{$c}):" "),$c++); |
klopt, met print kan je het resultaat van een functie printen, met echo nietquote:Op zondag 2 oktober 2005 19:20 schreef Nevermind het volgende:
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
[ code verwijderd ]
Nog steeds veel te veel, maar het is weer een paar tekens minder
Maar als ik het goed begrijp kun je alleen het print-commando gebruiken? Zelfs echo werkt niet.
Maar je doet '& 0', dus ik mag aannemen dat $c een integer is? Of is het een character?quote:Op zondag 2 oktober 2005 19:27 schreef Swetsenegger het volgende:
[..]
Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie)
Ik wil niet vervelden doen, maar klopt je output wel? Je moet wel rekening houden met de spaties.quote:Op zondag 2 oktober 2005 19:20 schreef Nevermind het volgende:
Ik kwam er achter dat je in for-loops ook direct resultaat kan teruggeven, weer wat geleerd. Daarmee kom ik op
[ code verwijderd ]
Nog steeds veel te veel, maar het is weer een paar tekens minder
Maar als ik het goed begrijp kun je alleen het print-commando gebruiken? Zelfs echo werkt niet.
1 2 3 | input = "PHPFreakz heeft een community" output = "PhPfReAkZ hEeFt EeN cOmMuNiTy" // Goed output = "PhPfReAkZ HeEfT EeN CoMmUnItY" // Fout |
$c & 0 is altijd 0, net als $c and false altijd false is.quote:Op zondag 2 oktober 2005 19:27 schreef Swetsenegger het volgende:
[..]
Ongeacht de waarde van $c geeft hij dus altijd 0 terug (en met chr() dus een spatie)
hoe moet ik dan AND'ten met 0quote:Op zondag 2 oktober 2005 19:32 schreef SuperRembo het volgende:
[..]
$c & 0 is altijd 0, net als $c and false altijd false is.
Die bitwise operaties werken ook met tekens, maar dan moet je wel aan beide kanten een character gebruiken. Dat het verschil tussen hoofdletter en kleine letter altijd een spatie is, dat veronderstel ik bekendquote:Op zondag 2 oktober 2005 19:28 schreef Swetsenegger het volgende:
[..]
klopt, met print kan je het resultaat van een functie printen, met echo niet
en je kan die strtolower en strtoupper nog vervangen door een bitwise operatie. Hoewel dat bij tot op heden nog niet lukt
Ja ik vat 'm nu, moet dus $c=$c&' ' zijn.quote:Op zondag 2 oktober 2005 19:35 schreef Light het volgende:
[..]
Er zit verschil tussen 'a' & 0 en 'a' & '0'.
1 2 3 | <?php $a=strtolower($_POST[string]);$a=preg_replace('/\w\s?\w?/e','ucfirst("$0")',$a); ?> |
Hij doet het niet.quote:Op zondag 2 oktober 2005 19:41 schreef JeRa het volgende:
[ code verwijderd ]
Verder dan dat kom ik op het moment niet. 84 tekens inclusief <? en ?>
1 2 3 | <?php $a=strtolower($_POST[string]);echo preg_replace('/\w\s?\w?/e','ucfirst("$0")',$a); ?> |
Maak er danquote:
1 | <?=preg_replace('/\w\s?\w?/e','ucfirst("$0")',strtolower($_POST[string])); |
In mijn afgunst van die constructie was ik 'm gewoon helemaal vergetenquote:Op zondag 2 oktober 2005 19:51 schreef Nevermind het volgende:
[..]
Maak er dan
[ code verwijderd ]
van, heb je 74
Case insensitive maken is makkelijk (i-modifier), maar de bron lowercase maken is een ander verhaalquote:Op zondag 2 oktober 2005 19:56 schreef Nevermind het volgende:
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten?
case insensitive preg_replace is geen probleem (ipv /e wordt het /ie), maar... wat doe je dan als de input een hoofdletter is en het een kleine letter moet worden?quote:Op zondag 2 oktober 2005 19:56 schreef Nevermind het volgende:
Kun je niet iets toevoegen aan de pattern zodat ie case insensitive wordt en je het "strtolower"-stukje weg kan laten?
quote:Op zondag 2 oktober 2005 19:57 schreef Swetsenegger het volgende:
ucfirst maakt van het eerste karakter van een string een hoofdletter.
Ik begrijp je regexp niet
1 | \w\s?\w? |
Je hebt gelijk, ik zat even mee te denken, maar ik heb veel te weinig ervaring met regexp om iets zinnigs toe te voegenquote:Op zondag 2 oktober 2005 19:58 schreef Swetsenegger het volgende:
[..]
case insensitive preg_replace is geen probleem (ipv /e wordt het /ie), maar... wat doe je dan als de input een hoofdletter is en het een kleine letter moet worden?
Ach fuck, natuurlijk. ? is 0 of 1, dus je $0 wordt letter+letter of letter+spatie+letter, waarbij de eerste van $0 hoofdletter wordtquote:Op zondag 2 oktober 2005 19:59 schreef JeRa het volgende:
[..]
[ code verwijderd ]
Woord-karakter, eventuele whitespace, eventueel woord-karakter.
Deze string matched ie telkens (2 bij 2, bij een spatie 3, bij het laatste teken eventueel 1) en dan maakt ie van het eerste teken een uppercase
Dus:
blaat blaat blaat
Maar het is kennelijk niet dé oplossingquote:Op zondag 2 oktober 2005 20:01 schreef Swetsenegger het volgende:
[..]
Ach fuck, natuurlijk. ? is 0 of 1, dus je $0 wordt letter+letter of letter+spatie+letter, waarbij de eerste van $0 hoofdletter wordtDeze zocht ik al.
Die wil ik ook wel zienquote:
1 | <?=preg_replace('/\w/e','++$u%2?$0&~" ":$0|" "',$_POST[string]); |
Hmmm, ja. Heb 'm weer weggehaald. Had niet verwacht dat dat zo snel gevonden zou wordenquote:Op zondag 2 oktober 2005 20:07 schreef JeRa het volgende:
SuperRembo, klopt het dat jouw code op je site staat?
Hele mooie oplossing, maar daar kunnen er nog 3 vanafquote:Op zondag 2 oktober 2005 20:06 schreef Light het volgende:
[ code verwijderd ]
Ik heb er nog 65 van weten te maken
quote:Op zondag 2 oktober 2005 20:06 schreef Light het volgende:
[ code verwijderd ]
Ik heb er nog 65 van weten te maken
1 | '++$u%2?$0&~" ":$0|" "' |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |