/ 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
PHP string[] problem
Fra : Asger-P


Dato : 26-09-11 16:01


Hejsa

I en uhyre simpel kryptering prøvede jeg det her:

function convertChars( $Src='aa' )
{
$L = strlen( $Src );
for( $x = 0; $x < $L ; $x++ )
{
Src[$x] = convertChar( $Src[$x] );//**
}
return $Src;
}

Men det var ikke lovligt venstre side i linje ** er problemet.
Funktionen her nedenfor virker, men den er jo ufatteligt meget
langsommere, den returnerer en ny streng hver gang jeg skifter
et enkelt bogstav.

Det må da kunne gøres mere elegant. ???

function convertChars( $Src='aa' )
{
$L = strlen( $Src );
for( $x = 0; $x < $L ; $x++ )
{
$Src = substr_replace ( $Src , convertChar( $Src[$x] ) , $x , 1 );
}
return $Src;
}

p.s. convertChar skifter bare bogstavet ud med et andet,
den funktion virker.

str_replace kan ikke bruges da mange bogsaver går igen
både før og efter, bare på nye pladser.

Selve den "krypterede" streng kommer fra et c++ program
og sendes vie en URL.

På forhånd tak
Venlig hilsen
Asger-P

 
 
Birger Sørensen (26-09-2011)
Kommentar
Fra : Birger Sørensen


Dato : 26-09-11 16:15

Efter mange tanker skrev Asger-P:
> Hejsa
>
> I en uhyre simpel kryptering prøvede jeg det her:
>
> function convertChars( $Src='aa' )
> {
> $L = strlen( $Src );
> for( $x = 0; $x < $L ; $x++ )
> {
> Src[$x] = convertChar( $Src[$x] );//**
> }
> return $Src;
> }
>
> Men det var ikke lovligt venstre side i linje ** er problemet.
> Funktionen her nedenfor virker, men den er jo ufatteligt meget
> langsommere, den returnerer en ny streng hver gang jeg skifter
> et enkelt bogstav.
>
> Det må da kunne gøres mere elegant. ???
>
> function convertChars( $Src='aa' )
> {
> $L = strlen( $Src );
> for( $x = 0; $x < $L ; $x++ )
> {
> $Src = substr_replace ( $Src , convertChar( $Src[$x] ) , $x , 1 );
> }
> return $Src;
> }
>
> p.s. convertChar skifter bare bogstavet ud med et andet,
> den funktion virker.
>
> str_replace kan ikke bruges da mange bogsaver går igen
> både før og efter, bare på nye pladser.
>
> Selve den "krypterede" streng kommer fra et c++ program
> og sendes vie en URL.
>
> På forhånd tak
> Venlig hilsen
> Asger-P

function convertChars( $Src='aa' ) {
$L = strlen( $Src );
$ret = '';
for( $x = 0; $x < $L ; $x++ ) {
$ret .= convertChar( $Src[$x] );
}
return $res;
}

PHP convention er at variable bruger lowercase, konstanter uppercase...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Asger-P (26-09-2011)
Kommentar
Fra : Asger-P


Dato : 26-09-11 16:56


Hej Birger

On the: 26. of september-2011 At: 17:14 Birger Sørensen wrote:

>
> function convertChars( $Src='aa' ) {
> $L = strlen( $Src );
> $ret = '';
> for( $x = 0; $x < $L ; $x++ ) {
> $ret .= convertChar( $Src[$x] );
> }
> return $res;
> }

Mange tak, det er da en del bedre, men den skal jo stadig reallokere
nogle gange hvis strengen er lang, ik ?

Kan man virkelig ikke bytte bogstaverne i en streng,
som jeg gerne ville ?

p.s. det er da return $ret;
i stedet for:
return $res;

bare en slåfejl ?

Tak for hjælpen
Venlig hilsen
Asger-P

Birger Sørensen (26-09-2011)
Kommentar
Fra : Birger Sørensen


Dato : 26-09-11 17:11

Asger-P kom med følgende:
> Hej Birger
>
> On the: 26. of september-2011 At: 17:14 Birger Sørensen wrote:
>
>>
>> function convertChars( $Src='aa' ) {
>> $L = strlen( $Src );
>> $ret = '';
>> for( $x = 0; $x < $L ; $x++ ) {
>> $ret .= convertChar( $Src[$x] );
>> }
>> return $res;
>> }
>
> Mange tak, det er da en del bedre, men den skal jo stadig reallokere
> nogle gange hvis strengen er lang, ik ?
>
> Kan man virkelig ikke bytte bogstaverne i en streng,
> som jeg gerne ville ?
>
> p.s. det er da return $ret;
> i stedet for:
> return $res;
>
> bare en slåfejl ?
>
> Tak for hjælpen
> Venlig hilsen
> Asger-P

Jo - det er en slåfejl ;>)

Jeg mener at din egen funktion bør virke - strenge skal kunne indexes
som et array.
Måske fordi der mangler et $ i linien i for-løkken?

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Asger-P (26-09-2011)
Kommentar
Fra : Asger-P


Dato : 26-09-11 18:01


Hej Birger

On the: 26. of september-2011 At: 18:11 Birger Sørensen wrote:

>
> Jeg mener at din egen funktion bør virke - strenge skal kunne indexes
> som et array.
> Måske fordi der mangler et $ i linien i for-løkken?

det var en af mine slå fejl
dette er hvad PHPlint siger:

$Src[$x] = convertChar( $Src[$x] );
\_ HERE
==== 50: ERROR: invalid left hand side in assignment.

Men, men, men du har så ganske ret, uden at vide noget
fandt jeg PHPlint til validering, da mit script ikke virkede
den fandt alle fejlene, men åbenbart også en der faktisk
ikke er en fejl.

Jeg ændrede koden tilbage til:

function convertChars( $Src='' )
{
$L = strlen( $Src );
for( $x = 0; $x < $L ; $x++ )
$Src[$x] = convertChar( $Src[$x] );
      
return $Src;
}
tjekkede den på:
http://www.hcibook.com/meandeviation/php-syntax-check/v5-2/syntax-check.php

ingen fejl, og den kører da også fint nu.


Mange tak for hjælpen
Venlig hilsen
Asger-P

Birger Sørensen (26-09-2011)
Kommentar
Fra : Birger Sørensen


Dato : 26-09-11 18:16

Asger-P skrev den 9/26/2011:
> Jeg ændrede koden tilbage til:
>
> function convertChars( $Src='' )
> {
> $L = strlen( $Src );
> for( $x = 0; $x < $L ; $x++ )
> $Src[$x] = convertChar( $Src[$x] );
>
> return $Src;
> }
> tjekkede den på:
> http://www.hcibook.com/meandeviation/php-syntax-check/v5-2/syntax-check.php

Det giver ikke ret meget mening...
Hvad var den oprindelige fejl?
Og hvorfor hjælper det at fjerne en defaultværdi og et sæt optional {}?

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Bertel Lund Hansen (26-09-2011)
Kommentar
Fra : Bertel Lund Hansen


Dato : 26-09-11 18:51

Birger Sørensen skrev:

>> $Src[$x] = convertChar( $Src[$x] );

> Det giver ikke ret meget mening...
> Hvad var den oprindelige fejl?

Manglende $ foran Src. Resten har ingen betydning.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Birger Sørensen (26-09-2011)
Kommentar
Fra : Birger Sørensen


Dato : 26-09-11 21:43

Bertel Lund Hansen har bragt dette til verden:
> Birger Sørensen skrev:
>
>>> $Src[$x] = convertChar( $Src[$x] );
>
>> Det giver ikke ret meget mening...
>> Hvad var den oprindelige fejl?
>
> Manglende $ foran Src. Resten har ingen betydning.

Ok. Troede kun det var her, $ var smuttet.
Så er det jo klart nok ^^

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Asger-P (26-09-2011)
Kommentar
Fra : Asger-P


Dato : 26-09-11 22:38


Hej Bertel

On the: 26. of september-2011 At: 19:51 Bertel Lund Hansen wrote:

> Birger Sørensen skrev:
>
>>> $Src[$x] = convertChar( $Src[$x] );
>
>> Det giver ikke ret meget mening...
>> Hvad var den oprindelige fejl?
>
> Manglende $ foran Src. Resten har ingen betydning.

Nej det var en typo her i gruppen. Her er det jeg tjekkede i

PHPlint på førnævnte adresse:

35: function convertChars( $Src='' )
36: {
37: $L = strlen( $Src );
38: for( $x = 0; $x < $L ; $x++ )
39: $Src[$x] = convertChar( $Src[$x] );

$Src[$x] = convertChar( $Src[$x] );
\_ HERE
==== 39: ERROR: invalid left hand side in assignment.
40:
41: return $Src;
42: }

Men jeg tror faktisk at PHPlint er et sprog i sig selv.
Jeg fandt en validator og den giver ingen fejl og det virker
også i browseren, så dette var bare for at forklare hvad
der foregik.


Tak for hjælpen
Venlig hilsen
Asger-P

Birger Sørensen (26-09-2011)
Kommentar
Fra : Birger Sørensen


Dato : 26-09-11 22:49

Asger-P kom med denne ide:
> Hej Bertel
>
> On the: 26. of september-2011 At: 19:51 Bertel Lund Hansen wrote:
>
>> Birger Sørensen skrev:
>>
>>>> $Src[$x] = convertChar( $Src[$x] );
>>
>>> Det giver ikke ret meget mening...
>>> Hvad var den oprindelige fejl?
>>
>> Manglende $ foran Src. Resten har ingen betydning.
>
> Nej det var en typo her i gruppen. Her er det jeg tjekkede i
>
> PHPlint på førnævnte adresse:
>
> 35: function convertChars( $Src='' )
> 36: {
> 37: $L = strlen( $Src );
> 38: for( $x = 0; $x < $L ; $x++ )
> 39: $Src[$x] = convertChar( $Src[$x] );
>
> $Src[$x] = convertChar( $Src[$x] );
> \_ HERE
> ==== 39: ERROR: invalid left hand side in assignment.
> 40:
> 41: return $Src;
> 42: }
>
> Men jeg tror faktisk at PHPlint er et sprog i sig selv.
> Jeg fandt en validator og den giver ingen fejl og det virker
> også i browseren, så dette var bare for at forklare hvad
> der foregik.
>
>
> Tak for hjælpen
> Venlig hilsen
> Asger-P

Iflg det link du selv gav, er PHPlint, netop til at checke for fejl i
PHP kode...
Aktuelle side til PHP 5.2 - kan give "forkerte" syntax fejl for andre
versioner.
Så der er noget der ikke passer sammen...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Asger-P (26-09-2011)
Kommentar
Fra : Asger-P


Dato : 26-09-11 22:59


Hej Birger

On the: 26. of september-2011 At: 23:48 Birger Sørensen wrote:

>
> Iflg det link du selv gav, er PHPlint, netop til at checke for fejl i
> PHP kode...
> Aktuelle side til PHP 5.2 - kan give "forkerte" syntax fejl for andre
> versioner.

Men den giver samme fejl hvis jeg vælger PHP4, så der er nok
noget galt med siden.

> SÃ¥ der er noget der ikke passer sammen...

Det kan du meget vel ha ret i, men jeg er helt ny i PHP,
så den diskussion har jeg ikke evner til.


Venlig hilsen
Asger-P

Asger-P (27-09-2011)
Kommentar
Fra : Asger-P


Dato : 27-09-11 14:54


Hej Birger

On the: 26. of september-2011 At: 23:48 Birger Sørensen wrote:

> Iflg det link du selv gav, er PHPlint, netop til at checke for fejl i
> PHP kode...
> Aktuelle side til PHP 5.2 - kan give "forkerte" syntax fejl for andre
> versioner.
> SÃ¥ der er noget der ikke passer sammen...

Jeg har reporteret det som en but til ham del laver PHPLint
Han har vendt tilbage og indømmet at det er en bug, så det
bliver nok fikset snart.


Venlig hilsen
Asger-P

Søg
Reklame
Statistik
Spørgsmål : 177422
Tips : 31962
Nyheder : 719565
Indlæg : 6407883
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste