Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

String in Array packen, ich komm nicht drauf...

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 18.07.2011, 16:17

Ein freunldiches Hallo in die Runde,

Folgendes Problem:
Gegeben sei ein String alà

Code: Alles auswählen

$str = '
#CCC58F
Grünbeige
#D1BC8A
Beige
#D2B773
Sandgelb
#F7BA0B
Signalgelb
#E2B007
Goldgelb
#C89F04
Honiggelb
#E1A100
Maisgelb
#E79C00
Narzissengelb
usw...';
Nun möchte ich diesen String in ein Array packen und zwar
soll das Ergbnis dann so aussehen:

Code: Alles auswählen

Array
(
    [1] => Array
        (
            [name] => Gelbbraun
            [hex] => #fgcd88
        )

    [2] => Array
        (
            [name] => Grün
            [hex] => #006600
        )

    usw.
)

 


)
Ich habe jetzt schon die wildesten Varianten mit foreach etc. probiert, aber es gelingt mir nicht; bin eben kein php-profi.

Kann mir da jemand einen Tipp geben?

Vielen Dank

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


euroexchange.de
PostRank 6
PostRank 6
Beiträge: 471
Registriert: 02.06.2007, 13:49

Beitrag von euroexchange.de » 18.07.2011, 16:43

Hallo xoni.

Entweder mit explode:

<?
$string = "Das||ist||aber||rot";
$array = explode("||",$string);

foreach ($array as $value)
{
echo $value."<br>";
}
?>

oder mit implode:

$new_string = implode("||", $array);
echo $new_string;

Viel Spaß

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 18.07.2011, 16:56

Hallo euroexchange.de,

danke für Deine Antwort; das mit im/explode ist mir schon klar, allerdings
fehlt mir in dem String ein Delimiter. Der String umfasst ca. 4000 Zeilen und jetzt händisch ein "Trennzeichen" einzubauen um dann hinterher mit explode arbeiten zu können, ist leider nicht drin.

Andere Ideen?

Anonymous

Beitrag von Anonymous » 18.07.2011, 16:59

du kannst doch # als delimiter verwenden, und dann teilste den hexwert und die farbangabe nochmal mit einem explode mit dem zeilenumbruch als trennzeichen.... das # musste dann natürlich wieder davorsetzen... ;-)


oder machst es direkt mit einem regexpr...

andreas-flegler
PostRank 1
PostRank 1
Beiträge: 7
Registriert: 15.03.2011, 09:20
Wohnort: Wertheim

Beitrag von andreas-flegler » 18.07.2011, 18:35

Das hier sollte funktionieren - vorausgesetzt der String enthält Umbrüche als Trennzeichen:

Code: Alles auswählen

preg_match_all&#40;'|&#40;#&#91;A-Fa-f0-9&#93;&#123;6&#125;&#41;\n&#40;.*&#41;\n|m', $str, $arr, PREG_PATTERN_ORDER&#41;;
unset&#40;$arr&#91;0&#93;&#41;;

andreas-flegler
PostRank 1
PostRank 1
Beiträge: 7
Registriert: 15.03.2011, 09:20
Wohnort: Wertheim

Beitrag von andreas-flegler » 18.07.2011, 19:00

Ich korrigiere mich mal selbst:

Code: Alles auswählen

$arr = array&#40;&#41;;
preg_match_all&#40;'|&#40;#&#91;A-Fa-f0-9&#93;&#123;6&#125;&#41;\n&#40;&#91;^\n&#93;*&#41;\n|m', $str, $result, PREG_SET_ORDER&#41;;
foreach&#40; $result as $r &#41; array_push&#40; $arr,  array&#40; "hex" => $r&#91;1&#93;, "name" => $r&#91;2&#93; &#41; &#41;;
Und falls du Probleme mit den Umlauten hast:

Code: Alles auswählen

utf8_decode&#40;$arr&#91;0&#93;&#91;name&#93;&#41;;
Andreas Flegler
Webdesign, Programmierung, SEO & SEM
www.web-freelancer.de

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 18.07.2011, 19:13

Hallo Net(t)worker,

EDIT : DAnke auch an andreas-flegler für seine Antwort

danke für den Anstoss, damit klappt es jetzt...

Code: Alles auswählen

$arr = array&#40;&#41;;

$result_a = explode&#40;"#",$str&#41;;

foreach &#40;$result_a as $value&#41; &#123;
$result_b = explode&#40;"\n",$value&#41;;
$test&#91;'hex'&#93;  = $result_b&#91;0&#93;;
$test&#91;'name'&#93; = $result_b&#91;1&#93;;
$arr&#91;&#93; = $test;
&#125;

Antworten