[PHP] letters omzetten naar afbeeldingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ellow

Ik ben bezig een functie in PHP te maken die (Nederlandse) woorden omzet naar afbeeldingen die gebaren uit de (Nederlandse) gebarentaal voorstellen. De functie checkt per woord of er een afbeelding van het gebaar op de server staat, en zoniet, dan gaat hij het woord letter-voor-letter in afbeeldingen omzetten ('vingerspellen').
Met dit laatste heb ik nog wat problemen... Eerst had ik het simpelweg met str_replace("$letter", "<img...>", $string[$i]); laten vervangen, maar dat bleek niet te werken: hij ging dan ook alles wat hij had vervangen veranderen (dus de i, m en g van <img...> ook 8)7 )
Weet iemand misschien hoe je een woord teken-voor-teken kan opdelen in elementen voor 'n array of hoe je op 'n andere manier dit probleem kan oplossen?
(BTW, hier staat ook m'n script wat ik nu gebruik bij)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function translate($string){
 $string = str_replace(",", "", $string); // de speciale tekens worden eruit gehaald (komt meer bij)
 $string = split(" ", $string); //ieder woord wordt 'n apart element van een array
 for($i = 0; !empty($string[$i]); $i++){
  $path = "img/sw/".$string[$i].".png"; // map waar alle afbeeldingen staan
  if(file_exists($path)){ 
   $dimensions = getimagesize($path);
   echo "[img]\"".$path."\"[/img] ";
  } else { // als de afbeelding niet in de map staat, moet het script het woord letter-voor-letter bekijken
   echo "<span style=\"unknown-sign\" title=\"".$string[$i]."\">";
   // hier moeten de aparte letters dus worden vervangen met een afbeelding
   echo "</span>";
  }
 }
}


Alvast bedankt!


smsduim

Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 20-09 21:57

Scott

Ik ben, dus ik tweak

Ff een verkorte versie, moet je hem maar ff aanpassen naar jouw wensen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function translate($string) {

    for ($i = 0; $i < strlen($string); $i++) {
    
        $path = 'img/sw/'.$string{$i}.'.png';
        if (file_exists($path)) {
        
            $size = getimagesize($path); // hoeft niet per se, doe het omdat jij het ook doet
            echo '[img]"'.$path.'"[/img]';
        }
    }
}
?>

[ Voor 30% gewijzigd door Scott op 09-12-2004 18:36 ]


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Je kunt de afzonderlijke karakters van 1 woord gewoon benaderen als ware het een array:

PHP:
1
2
3
for($j =0; $j < strlen($string[$i]); $j++) {
    echo "hier img tag voor het plaatje van de ".$string[$i][$j];
}

[ Voor 7% gewijzigd door Genoil op 09-12-2004 18:35 . Reden: Accolade teveel :+ ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
De syntax die ScottB ook gebruikt (met accolades in plaats van blokhaken; dus $str{1} ipv $str[1]) is wel te prefereren, omdat strings geen echte arrays zijn. (Je kunt er allerlei handig functies die wel op arrays werken niet op los laten bijvoorbeeld.)

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Je zou een preg_split() kunnen gebruiken. Die zou dan ongeveer zo moeten luiden (ben geen held in regular expressions)
PHP:
1
$letter_array = preg_split('/([a-zA-Z])/', $woord, -1,PREG_SPLIT_DELIM_CAPTURE);

De haakjes en de "PREG_SPLIT_DELIM_CAPTURE" moeten ervoor zorgen dat het gematchte teken ook wordt gereturned.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
thnx allemaal! _/-\o_ het werkt gelukkig allemaal perfect!
Pagina: 1