[PHP] Textarea uitlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cemtex
  • Registratie: Januari 2000
  • Laatst online: 19-06 07:54

cemtex

Version 1.1.1

Topicstarter
Ik ben bezig met een soort van import pagina aan het bouwen waar ik gebruik maak van een textarea.
Deze wil ik uitlezen en dan line for line splitten en in een db stoppen.

Het formaat van de inhoud(regel) ziet er zo uit: 'url;beschrijving van de url' en dan tig keer.
Bv.: http://www.tweakers.net;Tweakers
Ik ben zelf al bezig geweest maar ik kom er niet uit. terwijl me het erg simpel lijkt om te doen.
Dit is wat ik heb:
code:
1
2
3
4
    $batchvalue = $_POST['batchbox'];
    for ($w=0; $w<count($batchvalue); $w++){
        echo $batchvalue[$w] . ", \n";
    }


Ik krijg dan gewoon alles in een regel terug. Maar ik wil het resultaat dus per regel terug.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je zult explode moeten gebruiken: eerst exploden op newlines, daarna regel per regel doorlopen dmv foreach, en elke regel afzonderlijk weer exploden op puntkomma.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
$batchvalue = $_POST['batchbox'];
$batcharray = explode($batcharray, "\n");
foreach ($batcharray as $a) {
  $line = explode($a, ";");
  foreach($line as $value)
    echo("Value: ".$value);
}

Zo moeilijk is dat toch niet? Bedenk even wat jij deed en wat dit doet... Jij spreekt het text-veld al aan als array, maar dat slaat natuurlijk nergens op...

[ Voor 72% gewijzigd door Verwijderd op 09-02-2006 10:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 08 februari 2006 @ 18:14:
PHP:
1
2
3
4
5
6
7
$batchvalue = $_POST['batchbox'];
$batcharray = explode($batcharray, "\n");
foreach ($batacharray as $a) {
  $line = explode($a, ";");
  foreach($line as $value)
    echo("Value: ".$value);
}

Zo moeilijk is dat toch niet? Bedenk even wat jij deed en wat dit doet... Jij spreekt het text-veld al aan als array, maar dat slaat natuurlijk nergens op...
Couldn't agree more

[ Voor 7% gewijzigd door Verwijderd op 09-02-2006 10:19 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Verwijderd schreef op woensdag 08 februari 2006 @ 18:14:
PHP:
1
2
3
4
5
6
7
$batchvalue = $_POST['batchbox'];
$batcharray = explode($batcharray, "\n");
foreach ($batcharray as $a) {
  $line = explode($a, ";");
  foreach($line as $value)
    echo("Value: ".$value);
}

Zo moeilijk is dat toch niet? Bedenk even wat jij deed en wat dit doet... Jij spreekt het text-veld al aan als array, maar dat slaat natuurlijk nergens op...
indeed. een textarea is gewoon een stringvalue met linebreaks.
exploden op de linebreak geeft losse regels terug als array, en dan ga je gewoon alle keys van de array langs.
bij een string gaat dat nogal lastig omdat er maar 1 key is eigenlijk (wanneer je die aanspreekt als array that is)

edit: en daarna wil je natuurlijk nog elke value in de array nog een keer splitten met explode, op de ";" zodat de url en de omschrijving gesplitst zijn.
zoals in het stukje code hierboven ook al is gedaan ;)

[ Voor 15% gewijzigd door McKaamos op 09-02-2006 10:30 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Als je dat soort dingen niet lukt (wat ik me prima kan begrijpen), moet je eerst eens beginnen met print_r($_POST) of print_r($_GET). Dan zie je immers wat voor variabelen je hebt binnen gekregen, en hoe ze eruit zien. Waarschijnlijk had je dan ook gezien dat een string aanspreken als array een beetje dom is :)

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 19:37
Verwijderd schreef op woensdag 08 februari 2006 @ 18:14:
PHP:
1
2
3
4
5
6
7
$batchvalue = $_POST['batchbox'];
$batcharray = explode($batcharray, "\n");
foreach ($batcharray as $a) {
  $line = explode($a, ";");
  foreach($line as $value)
    echo("Value: ".$value);
}

Zo moeilijk is dat toch niet? Bedenk even wat jij deed en wat dit doet... Jij spreekt het text-veld al aan als array, maar dat slaat natuurlijk nergens op...
Persoonlijk vind ik regels 4-5 minder mooi. Ik zou 't alsvolgt doen:
PHP:
1
list($url, $description) = explode(';', $a);

[ Voor 7% gewijzigd door Mawlana op 09-02-2006 13:38 ]


Acties:
  • 0 Henk 'm!

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 12-09 18:14
Verwijderd schreef op woensdag 08 februari 2006 @ 18:14:
PHP:
1
2
3
4
5
6
7
$batchvalue = $_POST['batchbox'];
$batcharray = explode($batcharray, "\n");
foreach ($batcharray as $a) {
  $line = explode($a, ";");
  foreach($line as $value)
    echo("Value: ".$value);
}
gokje (en misschien zeikerig), maar regel 2... moet dat niet zijn:
PHP:
1
$batcharray = explode($batchvalue, "\n");

Acties:
  • 0 Henk 'm!

Verwijderd

Blackbird-ce schreef op donderdag 09 februari 2006 @ 12:53:
[...]


gokje (en misschien zeikerig), maar regel 2... moet dat niet zijn:
PHP:
1
$batcharray = explode($batchvalue, "\n");
Ow ja... Klopt :)

Er zat ook al een typo in (zie eerste quote).

Acties:
  • 0 Henk 'm!

Verwijderd

Sterker nog:

PHP:
1
$batcharray = explode("\n", $batchvalue);


Zie: http://nl3.php.net/explode

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En wat gebeurt er dan met de \r die al dan niet ook nog meegestuurd kan worden? ;)

PHP:
1
2
3
4
5
$batcharray = preg_split("/\r?\n/", $_POST['batchbox']);
$result = array();
foreach ($batcharray as $a) {
  $result[] = explode(';', $a);
}

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1