/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Antal forekomster...
Fra : Frank


Dato : 21-10-08 11:19

Hej,

Hvordan finder jeg antal forekomster af bracket-set {...} i en
tekst?

Jeg skal også bruge indholdet af hver enkelt bracket-set!

Er der noget, der har noget snedigt?

På forhånd tak!

Frank

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Carsten (21-10-2008)
Kommentar
Fra : Carsten


Dato : 21-10-08 11:37

"Frank" <frank@neergaard.dk> skrev i en meddelelse
news:48fdac7c$0$90269$14726298@news.sunsite.dk...
> Hvordan finder jeg antal forekomster af bracket-set {...} i en
> tekst?
>
> Jeg skal også bruge indholdet af hver enkelt bracket-set!
>
> Er der noget, der har noget snedigt?

Det lyder som en meget simpel "strpos" opgave. Kan dine bracket-set være
nestede ? as in:

Denne tekst udenfor brackets
{
denne tekst indenfor og..
{
denne tekst inde i en nested bracket...
}
inner bracket er nu slut
}
End of tekst

...og i givet fald at du har nestede brackets hvad skal output så være af din
"Jeg skal også bruge indholdet af hver enkelt bracket-set" ?

Carsten



Frank (21-10-2008)
Kommentar
Fra : Frank


Dato : 21-10-08 12:43

Carsten wrote in dk.edb.internet.webdesign.serverside.php:
> "Frank" <frank@neergaard.dk> skrev i en meddelelse
> news:48fdac7c$0$90269$14726298@news.sunsite.dk...
> > Hvordan finder jeg antal forekomster af bracket-set {...} i en
> > tekst?
> >
> > Jeg skal også bruge indholdet af hver enkelt bracket-set!
> >
> > Er der noget, der har noget snedigt?
>
> Det lyder som en meget simpel "strpos" opgave. Kan dine bracket-set være
> nestede ? as in:
>
> Denne tekst udenfor brackets
> {
> denne tekst indenfor og..
> {
> denne tekst inde i en nested bracket...
> }
> inner bracket er nu slut
> }
> End of tekst
>
> ...og i givet fald at du har nestede brackets hvad skal output så være af din
> "Jeg skal også bruge indholdet af hver enkelt bracket-set" ?
>
> Carsten
>
>
Du har ret mht strpos! Jeg var ikke lige opmærksom på -offset, som jo giver
mulighed for at søge igen!

Faktisk antog jeg der var en funktion som returnerede antal forekomster af f.eks.
"{". Så ville jeg vide hvormange gange jeg skulle søge for at finde indholdet af
nestede brackets.

Tak




--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (21-10-2008)
Kommentar
Fra : Martin


Dato : 21-10-08 12:51

Frank wrote:
> Carsten wrote in dk.edb.internet.webdesign.serverside.php:
>> "Frank" <frank@neergaard.dk> skrev i en meddelelse
>> news:48fdac7c$0$90269$14726298@news.sunsite.dk...
>>> Hvordan finder jeg antal forekomster af bracket-set {...} i en
>>> tekst?
>>>
>>> Jeg skal også bruge indholdet af hver enkelt bracket-set!
>>>
>>> Er der noget, der har noget snedigt?
>>
>> Det lyder som en meget simpel "strpos" opgave. Kan dine bracket-set være
>> nestede ? as in:
>>
>> Denne tekst udenfor brackets
>> {
>> denne tekst indenfor og..
>> {
>> denne tekst inde i en nested bracket...
>> }
>> inner bracket er nu slut
>> }
>> End of tekst
>>
>> ...og i givet fald at du har nestede brackets hvad skal output så være af din
>> "Jeg skal også bruge indholdet af hver enkelt bracket-set" ?
>>
>> Carsten
>>
>>
> Du har ret mht strpos! Jeg var ikke lige opmærksom på -offset, som jo giver
> mulighed for at søge igen!
>
> Faktisk antog jeg der var en funktion som returnerede antal forekomster af f.eks.
> "{". Så ville jeg vide hvormange gange jeg skulle søge for at finde indholdet af
> nestede brackets.

<?php
$str = '{][{£$€{€[]{[]]}[{[]}}';
echo count(@explode('}', $str))-1;

Thomas Lindgaard (21-10-2008)
Kommentar
Fra : Thomas Lindgaard


Dato : 21-10-08 20:32

Carsten wrote:
> Det lyder som en meget simpel "strpos" opgave. Kan dine bracket-set være
> nestede ? as in:
>
> Denne tekst udenfor brackets
> {
> denne tekst indenfor og..
> {
> denne tekst inde i en nested bracket...
> }
> inner bracket er nu slut
> }
> End of tekst
>
> ..og i givet fald at du har nestede brackets hvad skal output så være af din
> "Jeg skal også bruge indholdet af hver enkelt bracket-set" ?

Hvis der ikke må være nestede brackets, så kan følgende bruges til
trække indholdet af brackets ud:

<?php
$str = '{her står en række sætninger}{de står i hver sit sæt
krølle-parenteser}{osv}{og mere tekst}{her er {noget} med flere niveauer}';
preg_match_all('/{.*}/U', $str, $matches);
print_r($matches);
?>

Det kan ikke håndtere den sidste sætning, hvor {noget} står inden i et
sæt brackets.

--
Mvh.
/Thomas

MooreHojer (26-10-2008)
Kommentar
Fra : MooreHojer


Dato : 26-10-08 03:02

> Hvordan finder jeg antal forekomster af bracket-set {...} i en
> tekst?
> Jeg skal også bruge indholdet af hver enkelt bracket-set!

Med med noget i retningen af:

      function getBrackets($myText)
      {
         $offset = 0;
         $array = array("");
         $run = true;
         
         while($run)
         {
            $start = strpos($myText, '{', $offset);
            
            if($start === false)
               $run = false;
            else
            {
               $end = findEndBracket($start, $myText)-1;
               
               $myText_new = substr($myText, $start+1, ($end-$start));
               $array = array_merge($array, array($myText_new));
               
               $offset = $start+1;
            }
            
         }
         
         array_shift($array);
         return $array;
         
      }
      
      function findEndBracket($startPos, $myText)
      {
         $stack = 0;
         $array = str_split($myText);
         
         for($i = $startPos; $i < count($array); $i++)
         {
            if($array[$i] == '{')
               $stack = $stack+1;
            if($array[$i] == '}')
               $stack = $stack-1;

            
            if($stack == 0)
               return $i;
            if($stack == -1)
               return -1;
         }
         
         return (-1);
      }

MooreHojer (27-10-2008)
Kommentar
Fra : MooreHojer


Dato : 27-10-08 11:41

> Med med noget i retningen af:
> [SNIP]

lige en lille kommentar til denne mit kodeforslag... det er metoden
getBrackets du skal kalde med din tekst som argument. Den returnere så
et array med indholdet af hver bracket på hver sit index. Antallet af
brackets er så størrelsen på dit array.

--
MooreHojer

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste