Avatar billede thulstrup Nybegynder
01. juli 2003 - 10:49 Der er 10 kommentarer og
2 løsninger

Formatering af tekst til Flash

Jeg sender en streng fra PHP til Flash. Strengen indeholder en masse tekst der i blandt nogle priser. Disse priser skal højrejusteres mens resten af teksten skal venstrejustres. Teksten kan f.eks. se sådan her ud:

// tekst start
2002 Cabernet Sauvignon, Siete vineyard, Santa Molina, Chile 120,-

2000 Chateau Haut La Greniere, Saint Emilion 190,-

Er der specielle ønsker til vin menuen, kommer vi gerne med forslag.
// tekst slut

De 120,- og 190,- skal så højrejusteres.

Da Flash kun understøtter HTML 1.0, er det meget begrænset hvad man kan lave af HTML formatering. Derfor forstiller jeg mig at dele teksten op i to strenge, en med priserne og en med resten af teksten. Her er hvad jeg forløbig er kommet frem til.

$indhold = "<font face=\"verdana\">";
$indhold .= $row['indhold'];
$indhold .= "</font>";           

$priser .= "<font face=\"verdana\"><p align=\"right\">";
// find priserne i indhold strengen og tilføj dem til priser strengen.
$priser .= ereg_replace("[0-9]+,\-", 'HVAD SKAL DER STÅ HER?', $indhold);
$priser .= "</p><font>";
// fjern priserne fra indhold strengen
$indhold = ereg_replace("[0-9]+,\-", '', $indhold);


Og hvis der så står en masse linier tekst uden nogle priser, så bliver priserne og teksten forskudt i forhold til hinanden. Så der skal også på en eller anden måde gemmes et linieskift til pris strengen for hver linie tekst der ikke indeholder en pris.

Håber at I kan hjælpe mig!
Avatar billede avminarm Juniormester
01. juli 2003 - 12:05 #1
har du overvejet at bruge CSS til formateringen istedet for (jeg ved ikke om man kan i flash?)

men ellers kan det så ikke laves i en tabel?
Avatar billede thulstrup Nybegynder
01. juli 2003 - 12:11 #2
Man kan hverken burge CSS eller tabeller i Flash. Fra Flash Help:

The following HTML tags are supported in text fields: <A>, <B>, <FONT COLOR>, <FONT FACE>, <FONT SIZE>, <I>, <P>, and <U>.

The following HTML attributes are supported in text fields: LEFTMARGIN, RIGHTMARGIN, ALIGN, INDENT, and LEADING.

Derfor tror jeg at den eneste løsning er den med at dele teksten op i to strenge.
Avatar billede avminarm Juniormester
01. juli 2003 - 12:25 #3
må der bruges \n linie skift??
Avatar billede thulstrup Nybegynder
01. juli 2003 - 12:40 #4
Ja, \n og \r virker
Avatar billede avminarm Juniormester
01. juli 2003 - 13:03 #5
du vil dete tekst og priser op ikke - så ville jeg lave disse i hver deres felt i databasen en med tekst og en med pris
Avatar billede thulstrup Nybegynder
01. juli 2003 - 13:08 #6
Ja, det har jeg også overvejet, men problemet er at det er en kunde der via et CMS selv skriver teksten ind. D.v.s. det kan være der kommer lidt tekst, så nogle priser så lidt tekst igen osv. Derfor er det svært at adskille teksten og priserne direkte i databasen.
Avatar billede avminarm Juniormester
01. juli 2003 - 13:30 #7
det er altid noget rod når man skal hive noget ud af en streng - fo hvis brugeren afviger bare en lille smule fra standarden går det i kage ;o(

måske kunne man gøre det sådan at brugeren skal overholde en vis syntax - f.eks. tekst bla bla bla bla [PRIS]120,-[/PRIS] tekst igen bla bla osv og så søge efter start og slut tags her [PRIS] og erstatte alle disse - et forslag!
Avatar billede thulstrup Nybegynder
01. juli 2003 - 13:48 #8
Jeg kan ikke se at det skulle gøre nogen forskel. Der er vel lige så stor sansynelighed for at kunden afviger fra [PRIS]120,-[/PRIS] som fra 120,-

Men under alle omstændigheder skal jeg stadig have fundet på en løsning som kan splitte det op i 2 strenge.
Avatar billede avminarm Juniormester
01. juli 2003 - 14:19 #9
prøv at lege lidt med det her - jeg har lige hurtigt stykket det sammen fra en gl. kode:

<?php

function pris($str){

$list = explode("[PRIS]",$str); //man finder alle steder [php] er og får et array opdelt ud fra denne "opdeler"
$highstring=""; // Tom streng startes
$i=0; // tæller startes
foreach($list as $value){ // "Hopper" igennem arrayet $list
    $strings = explode("[/PRIS]",$value); // strings finder alle endelser[/PRIS] og danner et array

    if($i==0) //hvis i=0
    {
        $highstring .= implode("", $strings);
        $tekst .= $highstring;   
    }
    else
    {
        $highstring .= $strings[0].$strings[1];
        $pris .= $strings[0];
        $tekst .= $strings[1];
    }
    $i++; //plus 1
}
echo $highstring;
echo "<br>";
echo $pris;
echo "<br>";
echo $tekst;
}

$str = "her vinen til [PRIS]120,-[/PRIS] som du kan drikke, og en anden er til [PRIS]150,-[/PRIS] som er rigtig god";

pris($str);

?>
Avatar billede thulstrup Nybegynder
01. juli 2003 - 17:40 #10
Jeg tester lige og vender tilbage.
Avatar billede thulstrup Nybegynder
11. juli 2003 - 09:21 #11
Jeg fandt løsningen et andet sted, men du får halvdelen af pointene som tak for hjælp.
Avatar billede avminarm Juniormester
11. juli 2003 - 09:28 #12
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester