Archief - PHP: Woord splitten in letters

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

HelloApu

Legacy Member
Heyz,

Ik zoek een PHP functie of klein stukje script waarmee ik in een woord alle letters kan opsplitsen en in een array/variables zetten.

BV:
"ABC" => $letter1 = "A"; $letter2 = "B"; $letter3 = "C";

Alvast bedankt.

Bunz

Legacy Member
Omg, zoekt het op hé zeg.

Zet u woord in ne string.
Doe ne for zoalng dat ne length van u string.
Pakt ne substring van elke letter. en steekt hem in ne array.


Dat was moeilijk !

zucht; wijt dit stukje ergernis aan examenstress

Xcessive-

Legacy Member
Bunz zei:
Omg, zoekt het op hé zeg.

Zet u woord in ne string.
Doe ne for zoalng dat ne length van u string.
Pakt ne substring van elke letter. en steekt hem in ne array.


Dat was moeilijk !

zucht; wijt dit stukje ergernis aan examenstress

lol het normaal zeggen kon ook, niet iedereen kan even goed php als jij!

Zero Grav

Legacy Member
|22:36:45| <Bunz> Ziggie|g0ne
|22:36:49| <Bunz> verdedig mij is opt forum :p

Niet te vergeten dat deze persoon hier al tijden komt en telkens de simpelste vragen stelt zonder ervoor onderzoek te verrichten.

Ook beweert hij php te kennen wat duidelijk niet het geval is...

Dan mag men uiteindelijk wel even droogjes meedelen dat hij beter eerst zelf kan zoeken. Dit is een absolute basis.

DarkBone

Legacy Member
Héla héla mannekes!

Wat als ik jullie nu es komt te vertellen dat een string sowieso kan benaderd worden als een 'array' (dat is het niet echt)?
SUPRISE SURPRISE!

PHP:
<?php
$my_string = "De postbode poetst de postkoets met postkoetspoets";
echo $my_string{0};
echo $my_string{1};
echo $my_string{2};
echo $my_string{3};
echo $my_string{4};
echo $my_string{5};
?>

Eureka!
Dat is terug te vinden hier:
http://www.php.net/manual/en/language.types.string.php
Even scrollen!

Astu!
En gaat u allen heen in vrede!

*edit*
Ik was zelf al wat deprecated, blijken dus curly braces te zijn, en geen brackets (werk enkel nog omwille van backwards compatibility) ;)

-----

EN IK QUOTE:

String access and modification by character

Characters within strings may be accessed and modified by specifying the zero-based offset of the desired character after the string in curly braces.

Note: For backwards compatibility, you can still use array-brackets for the same purpose. However, this syntax is deprecated as of PHP 4.


Example 11-5. Some string examples
PHP:
<?php
// Get the first character of a string
$str = 'This is a test.';
$first = $str{0};

// Get the third character of a string
$third = $str{2};

// Get the last character of a string.
$str = 'This is still a test.';
$last = $str{strlen($str)-1};

// Modify the last character of a string
$str = 'Look at the sea';
$str{strlen($str)-1} = 'e';
        
?>
Ik krijg nu toch wel een reputatie puntje zeker hé :D

*edit*

lashknife verdient ook eentje, want zijn manier klopt ook :D
Bij deze ;)

[ImpacT]

Legacy Member
DarkBone zei:
Héla héla mannekes!

Wat als ik jullie nu es komt te vertellen dat een string sowieso kan benaderd worden als een 'array' (dat is het niet echt)?
SUPRISE SURPRISE!

PHP:
<?php
$my_string = "De postbode poetst de postkoets met postkoetspoets";
echo $my_string{0};
....
?>

Mja en nu gaan we het eens doen zoals het echt moet.


PHP:
<?
//scriptje om tekst af te drukken met een spatie ertussen
$text = "De postbode poetst de postkoets met postkoetspoets";
$length = strlen($text);
for($i = 0; $i <= $length; $i++)
{
  echo $text{$i};
  echo " ";
}

//scriptje om elke letter apart in een array te plaatsen
$text = "De postbode poetst de postkoets met postkoetspoets";
$length = strlen($text);
$textarray = array($length-1);
for($i = 0; $i < $length; $i++)
{
  $char = substr($text,$i,1);
  $nr = ord($char);
  if($nr != 32) //om de spaties niet in de array te stoppen
  {
    $textarray[$i] = $char;
  }
}

//scriptje om deze array af te drukken
for($i = 0; $i < $length; $i++)
{
  echo $textarray[$i] //wel weten dat dan de tekst zonder spaties wordt afgedrukt
}
?>

Die echo " " zou je nog ander kunnen oplossen, maar op deze manier werkt het ook.

DarkBone

Legacy Member
@Impact
Ik zie niet in wat het wezenlijk verschil is?
Fijn dat ge weet hoe je een lus moet gebruiken ;)

Om nog even op Lashknife zijn voorbeeld verder te gaan, als je echt verschillende variabelen wilt gebruiken doe je dit zo:

PHP:
<?php
$str= 'abc';
list($one, $two, $three) = str_split($str);
?>
Al is een array stukken handiger, dit was louter illustratief.

bobbejaan

Legacy Member
Ik denk dat hij zoiets bedoelt:
PHP:
$text = "ABC"; 
for($i = 1; $i <= strlen($text); $i++) 
{ 
  ${'letter'.$i} = $text{$i-1}; 
}
@[ImpacT]
Het is '< length' omdat je bij 0 begint.

killgore

Legacy Member
Xcessive- zei:
lol het normaal zeggen kon ook, niet iedereen kan even goed php als jij!
tbh:

dit is immense basis, die je overal kan vinden (tenzij je var vars wilt gebruiken ipv een array, wat stom is imho en NIET de vraag was). Zelfs al was helloapu hier al niet bekend zijn geweest, dan zou ik zo een reactie nog altijd perfect normaal hebben gevonden. Dit is nl. een perfect voorbeeld van iemand die veel te lui is om te zoeken op zijn probleem <_<.

S3cT0r

Legacy Member
Zoals Darkbone al zei:

PHP is gebaseerd op C, en in C zijn strings gewoon arrays van characters, ik heb zo'n donkerbruin vermoeden dat dat in PHP niet anders is, daarmee is het een totale verspilling om al die aparte characters in een array te zetten, want het is er al één!

char text[] = "hello";
==
char text[] = {'h','e','l','l','o','\0'}

(die \0 is de character delimiter, arrays van chars die een string bevatten moeten dus strlen(string)+1 groot zijn, maar daar moeten PHP'ertjes zich geen zorgen om maken, I love PHP :D).

Dit ter verduidelijking.

Lashknife

Legacy Member
hela hela ;)

wist ik wel :) enorm handig om bv flagfields te wijzigen, mysql ondersteunt dit trouwens ook:

update TABLE set FIELD = insert(FIELD,2,1,'0') where ROWID = 1 ofzoiets eh
mysql resource: http://dev.mysql.com/doc/mysql/en/string-functions.html

klein tricky is dat mysql vanaf 1 telt, niet vanaf 0 zoals we gewoon zijn in array's

ps: dat ik de functie gaf was eigenlijk - zoals ik al zei - meer een hint naar hem van "check nu toch eens in een keer al die functies dat je meer begrip hebt wat php kan aanvangen met strings voor je nogmaals met huiswerk afkomt"

killgore

Legacy Member
S3cT0r zei:
Zoals Darkbone al zei:

PHP is gebaseerd op C, en in C zijn strings gewoon arrays van characters, ik heb zo'n donkerbruin vermoeden dat dat in PHP niet anders is, daarmee is het een totale verspilling om al die aparte characters in een array te zetten, want het is er al één!

char text[] = "hello";
==
char text[] = {'h','e','l','l','o','\0'}

(die \0 is de character delimiter, arrays van chars die een string bevatten moeten dus strlen(string)+1 groot zijn, maar daar moeten PHP'ertjes zich geen zorgen om maken, I love PHP :D).

Dit ter verduidelijking.

In PHP strings =/= arrays, in C trouwens ook vaak niet, daar ga je ook vaak ptrs gebruiken (vooral wat betreft functie argumenten, die ook op vele vlakken op arrays lijken, maar het niet zijn! Je gebruikt bv geen vierkante haakjes om aparte letters aan te spreken maar accolades (d8 ik toch), vierkante haakjes zijn deprecated zover ik weet.

en je bent een ; vergeten bij je 2e c statement (dit is eerder muggengezift waar je niet moet op letten :p).

edit: db had dus al gezegd dat brackets geen echt geldige syntaxis meer zijn ;).

Flipkikker

Legacy Member
killgore zei:
In PHP strings =/= arrays, in C trouwens ook vaak niet, daar ga je ook vaak ptrs gebruiken (vooral wat betreft functie argumenten, die ook op vele vlakken op arrays lijken, maar het niet zijn! Je gebruikt bv geen vierkante haakjes om aparte letters aan te spreken maar accolades (d8 ik toch), vierkante haakjes zijn deprecated zover ik weet.

en je bent een ; vergeten bij je 2e c statement (dit is eerder muggengezift waar je niet moet op letten :p).

edit: db had dus al gezegd dat brackets geen echt geldige syntaxis meer zijn ;).

:offtopic:
waarom zijn ze overgeschakeld van [] naar {} ?
meestal veranderen ze dat uit praktische overwegingen, maar komt dit dan niet in conflict met functies en andere statement-blokken? :s

killgore

Legacy Member
Flipkikker zei:
:offtopic:
waarom zijn ze overgeschakeld van [] naar {} ?
meestal veranderen ze dat uit praktische overwegingen, maar komt dit dan niet in conflict met functies en andere statement-blokken? :s
[] is nog mogelijk wegens backwards compability issues

wrom {} => my guess: om duidelijk te maken dat strings geen arrays zijn ;).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan