Breedte van een woord

Status
Niet open voor verdere reacties.
Egel zei:
PHP:
// Woordbreedte met 20px Verdana - Egel 060314
var letterbreedte = {A: 14, B: 14, C: 14, D: 15, E: 13, F: 12, G: 16, H: 15, I: 8, J: 9, K: 14, L: 11, M: 17, N: 15, O: 16, P: 12, Q: 16, R: 14, S: 14, T: 12, U: 15, V: 14, W: 20, X: 14, Y: 12, Z: 14, a: 12, b: 12, c: 10, d: 12, e: 12, f: 7, g: 12, h: 13, i: 6, j: 7, k: 12, l: 6, m: 19, n: 13, o: 12, p: 12, q: 12, r: 9, s: 10, t: 8, u: 13, v: 12, w: 16, x: 12, y: 12, z: 11};
function woordbreedte(woord) {
 var breedte = 0;
 for (var i = 0; i < woord.length; i ++) breedte += letterbreedte[woord.charAt(i)];
 return breedte;
 };

alert(woordbreedte('Hallo')); //!: 51
alert(woordbreedte('qwertyuiopasdfghjklzxcvbnm')); //!: 292
Ik was het net in Php aan het vertalen. :D Werkt prima dat idee van lollige. :thumb:

Gr. Egel.
Maar met jouw code heb je alleen A-Z en a-z.
 
jeroendenoot zei:
Maar met jouw code heb je alleen A-Z en a-z.
PHP:
// Woordbreedte met 20px Verdana - Egel 060314
var letterbreedte = new Array(7,8,9,16,13,22,15,5,9,9,13,16,7,9,7,9,13,13,13,13,13,13,13,13,13,13,9,9,16,16,16,11,20,14,14,14,15,13,12,16,15,8,9,14,11,17,15,16,12,16,14,14,12,15,14,20,14,12,14,9,9,9,16,13,13,12,12,10,12,12,7,12,13,6,7,12,6,19,13,12,12,12,9,10,8,13,12,16,12,12,11,13,9,13,16);
function woordbreedte(woord) {
 var breedte = 0;
 for (var i = 0; i < woord.length; i++) breedte += letterbreedte[woord.charCodeAt(i)-32];
 return breedte;
 };

alert(woordbreedte('Hallo')); //!: 51
alert(woordbreedte('qwertyuiopasdfghjklzxcvbnm')); //!: 292
Nu niet meer. :) Ik ben maar t/m 126 gegaan want je weet niet welke tekenset de bezoeker heeft.

Je non breakable space (nbsp 160) staat nog op 0. ;)

Vr.Gr. Egel.
 
Egel zei:
Nu niet meer. :) Ik ben maar t/m 126 gegaan want je weet niet welke tekenset de bezoeker heeft.

Je non breakable space (nbsp 160) staat nog op 0. ;)
Weet ik, maar ik wist de breedte niet, want ik kon hem niet weergeven... Wat is dat eigenlijk voor iets?

Welke code is beter? Die van jou of die van mij? Of maakt dat niets uit?
 
jeroendenoot zei:
Weet ik, maar ik wist de breedte niet, want ik kon hem niet weergeven... Wat is dat eigenlijk voor iets?

Welke code is beter? Die van jou of die van mij? Of maakt dat niets uit?
Je kunt dezelfde breedte nemen als voor de gewone spatie. &nbsp; (html) is een spatie waar de zin niet afbreekt (non-breaking space). Bij bv 'Oranje sinaasappel' kan de zin tussen Oranje en sinaasappel op een nieuwe regel verder gaan, bij 'Oranje&nbsp;sinaasappel' niet. Je typed het met alt+0160.


Beide codes zijn goed, maar volgens mij is
$titelbreedte += $letterbreedte[ord(substr($titel, $teller, 1)) - 32] . " ";
het rode gedeelte wel een foutje. :)

Ik heb de php met dit werkend gekregen:
PHP:
<?php
// Woordbreedte met 20px Verdana - Egel 060314

function woordbreedte($woord) {
 $letterbreedte = array(7,8,9,16,13,22,15,5,9,9,13,16,7,9,7,9,13,13,13,13,13,13,13,13,13,13,9,9,16,16,16,11,20,14,14,14,15,13,12,16,15,8,9,14,11,17,15,16,12,16,14,14,12,15,14,20,14,12,14,9,9,9,16,13,13,12,12,10,12,12,7,12,13,6,7,12,6,19,13,12,12,12,9,10,8,13,12,16,12,12,11,13,9,13,16);
 $breedte = 0;
 for ($i = 0; $i < strlen($woord); $i++) {
  $breedte += $letterbreedte[ord($woord{$i}) - 32];
  };
  return $breedte;
  };

print 'Hallo: ' . woordbreedte('Hallo') . '<br>'; // 51
print 'qwertyuiopasdfghjklzxcvbnm: ' . woordbreedte('qwertyuiopasdfghjklzxcvbnm') . '<br>'; // 292

?>
De letterbreedtes van jou zijn 2x zo groot, gebruik je 40px Verdana?


Vr.Gr. Egel.
 
Laatst bewerkt:
Egel zei:
Je kunt dezelfde breedte nemen als voor de gewone spatie. &nbsp; (html) is een spatie waar de zin niet afbreekt (non-breaking space). Bij bv 'Oranje sinaasappel' kan de zin tussen Oranje en sinaasappel op een nieuwe regel verder gaan, bij 'Oranje&nbsp;sinaasappel' niet. Je typed het met alt+0160.
Oké, weet ik dat ook weer :D
Egel zei:
Beide codes zijn goed,
Oké, ik denk dat ik die van mij dan maar gebruik, want ik gebruik liever eigen codes;).
Egel zei:
maar volgens mij is
$titelbreedte += $letterbreedte[ord(substr($titel, $teller, 1)) - 32] . " ";
het rode gedeelte wel een foutje. :)
Ja, inderdaad. Ik was nog aan het testen en ik ben het vergeten weg te halen:o.
Egel zei:
De letterbreedtes van jou zijn 2x zo groot, gebruik je 40px Verdana?
Nee, ik gebruik 30pt. ;) Die 20px was maar om te testen toen.

Ik denk dat ik nu verder kan. Bedankt voor alles!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan