10 Wörter in Titel und Text aufteilen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 10 Wörter in Titel und Text aufteilen

    Liebe PHP-Gemeinde

    Ich habe 10 unterschiedliche Wörter, die ich in einem Titel und Text anordnen will.
    Und zwar soll der Titel aus jeweils 3 dieser 10 Wörtern bestehen und der Text aus den restlichen 8. Warum 8?
    2 Wörter im Titel dürfen im Text nicht mehr vorkommen, 1 dagegen schon.

    Also z.B.
    Titel: wort3 wort5 wort8
    Text: wort1 wort2 wort3 wort4 wort6 wort7 wort9 wort10

    Als Ausgabe soll es mir alle möglichen Kombinationen untereinander anzeigen.

    Also so:
    Titel
    Text

    Titel
    Text

    usw.

    Mit Kombinationen meinen ich nicht die Reihenfolge der Wörter, sondern "nur" das Vorkommen.

    Kann mir jemand einen Tipp geben, wie ich das am besten anstellen soll? Zu meinen PHP-Kenntnissen: halt ein Webdesigner kann einfachere Scripts duraus selber erstellen oder bestehende anpassen.. aber dann hört es schon mal auf...

    Ist gar nicht so einfach zu erklären.... Hoffe aber, ihr wisst was ich meine.

    Vielen Dank!

  • #2
    Vielleicht hilft das:

    PHP: str_word_count - Manual

    Kommentar


    • #3
      danke für den Link. Ich schaue es mir an. Auf den ersten Blick hat es sicher ein paar Sachen dich ich daraus nehmen könnte... Aber ich bin bereits bei einer ersten Korrektur meiner ersten Anfrage:
      Es sind nicht unbedingt Wörter, sondern Begriffe mit mehreren Wörtern. Also z.B. so:
      Begriff 1: wort1
      Begriff 2: wort2
      Begriff 3: wort wort3
      Begriff 4: wort4
      Begriff 5: wort wort5

      muss schon ehrlich sagen, dass es für mich ziemlich kompliziert ist..

      Kommentar


      • #4
        Geht das vielleicht von der Beschreibung her etwas konkreter? Wie liegen denn deine "Wörter" und "Begriffe" vor?

        Kommentar


        • #5
          die Begriffe gebe ich ich im PHP-Script manuel ein. Wenn ich das Script dann aufrufe, sollen eben diese mögliche Kombinationen aufgezeigt werden.

          <?php
          $begriff1 = "blaue Blume";
          $begriff2 = "Baum";
          $begriff3 = "roter Sand";

          usw.

          ?>

          Sie müssen also nicht irgendwo ausgelesen werden...

          Kommentar


          • #6
            Bin mir immer noch nicht sicher, wie das gemeint ist, aber ich habe mal das umgesetzt, was ich reininterpretiere.

            (Sicherlich nicht die schlausten Algorithmen.)

            PHP-Code:
            <?php

            /**
             * Alle Permutationen von ($cnt über $p) ermitteln
             *
             * @param array $ret
             * @param int $cnt
             * @param int $p
             * @param int $start
             * @param string $stack
             */
            function calcPermutations(&$ret$cnt$p$start 0$stack '')
            {
                if (
            $p == 0) {
                    
            $ret[] = explode(','trim($stack','));
                } else {
                    for (
            $i $start$i $cnt - ($p 1); $i++) {
                        
            calcPermutations($ret$cnt$p 1$i 1$stack ',' $i);
                    }
                }
            }

            /**
             * Formt die Permutationen in Titel/Text-Paare um (wie im Thread beschrieben)
             *
             * @param array $permutations
             * @param int $cnt
             * @param int $p
             * @return array
             */
            function deriveTitleTextPairs(array $permutations$cnt$p)
            {
                
            $data = array();

                foreach (
            $permutations as $line) {
                    for (
            $i 0$i $p$i++) {
                        
            $tmp = array();
                        
            $tmp['title'] = $line;

                        for (
            $j 0$j $cnt$j++) {
                            if (!
            in_array($j$line) || $j == $line[$i]) {
                                
            $tmp['text'][] = $j;
                            }
                        }
                        
            $data[] = $tmp;
                    }
                }

                return 
            $data;
            }

            error_reporting(-1);
            header('Content-Type: text/plain');

            /*
                -------------------------------------------------------------------- Eingabe
            */

            $p 3// Anzahl der Phrasen im Titel

            // Das hier nutzen für mehr Übersicht:
            //$phrases = range('A', 'J');

            // Das hier nutzen für anschaulicheren Inhalt:
            $phrases = array();
            $phrases[] = '(asiatische Amphoren)';
            $phrases[] = '(Brasilien)';
            $phrases[] = '(Caesar)';
            $phrases[] = '(durstige Dornen)';
            $phrases[] = '(Erbsen)';
            $phrases[] = '(frohe Franzosen)';
            $phrases[] = '(Garten)';
            $phrases[] = '(Haus)';
            $phrases[] = '(irische Insel)';
            $phrases[] = '(Jahrmarkt)';

            /*
                --------------------------------------------------------------- Ende Eingabe
            */

            // Permutationen ermitteln

            calcPermutations($permutationscount($phrases), $p);
            $pairs deriveTitleTextPairs($permutationscount($phrases), $p);

            /*
                Ausgabe
            */

            foreach ($pairs as $line) {
                foreach (
            $line['title'] as $title) {
                    echo 
            $phrases[$title];
                }
                echo 
            "\n";
                foreach (
            $line['text'] as $text) {
                    echo 
            $phrases[$text];
                }
                echo 
            "\n\n";
            }

            Kommentar

            Lädt...
            X