Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

Zufallstext ausgeben per PHP

Sie befinden sich: Home > Php Tutorial > Zufallstext ausgeben per...

Zufallstext ausgeben per PHP


Eintrag am:  31.07.2007
Hits / Besucher:  21715
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wer seine Webseite etwas lebendiger gestalten möchte, kann mit PHP bei jedem Seitenaufruf einen zufälligen Text anzeigen lassen. Ob wechselnde Begrüßungen, Tipps des Tages oder zufällige Zitate: Mit der Funktion rand() und einem Array ist das in wenigen Zeilen erledigt. Dieses Tutorial zeigt dir Schritt für Schritt, wie du Zufallstexte erzeugst, sie aus externen Quellen lädst und sogar bestimmte Texte häufiger anzeigen kannst.

graph TD
    A["Array mit Texten definieren"] --> B["array_rand() aufrufen"]
    B --> C["Zufälligen Index erhalten"]
    C --> D["Text per Index auslesen"]
    D --> E["echo gibt Text aus"]

Texte in einem Array ablegen

Zuerst legst du die verschiedenen Texte fest, die zufällig erscheinen sollen. Dafür eignet sich ein Array, in dem jeder Eintrag einen möglichen Text enthält.

<?php

$texte = [
'Willkommen auf unserer Webseite!',
'Tipp: Schau dir unsere neuesten Tutorials an.',
'PHP macht Spaß und ist leicht zu lernen.',
];
?>

Seit PHP 5.4 kannst du Arrays mit der kurzen Schreibweise [ ] anlegen. Die ältere Variante array() funktioniert natürlich weiterhin. Der Vorteil eines Arrays: Du kannst beliebig viele Einträge hinzufügen, ohne den restlichen Code ändern zu müssen.

Einen zufälligen Text ausgeben

Um einen zufälligen Eintrag aus dem Array auszuwählen, erzeugst du mit rand() eine Zufallszahl zwischen 0 und dem letzten Array-Index. Zusammen mit echo gibst du den Text dann aus.

<?php

$texte = [
'Willkommen auf unserer Webseite!',
'Tipp: Schau dir unsere neuesten Tutorials an.',
'PHP macht Spaß und ist leicht zu lernen.',
];

$index = rand(0, count($texte) - 1);
echo $texte[$index];
?>

Die Funktion rand() erwartet zwei Parameter: den kleinsten und den größten Wert. Da Arrays in PHP bei Index 0 beginnen, setzen wir den Bereich von 0 bis count($texte) - 1. So funktioniert das Ganze automatisch, egal wie viele Einträge das Array hat.

Eleganter mit array_rand()

PHP bietet mit array_rand() eine Funktion, die speziell dafür gedacht ist, einen zufälligen Schlüssel aus einem Array zu liefern. Das macht den Code kürzer und besser lesbar.

<?php

$texte = [
'Willkommen auf unserer Webseite!',
'Tipp: Schau dir unsere neuesten Tutorials an.',
'PHP macht Spaß und ist leicht zu lernen.',
];

echo $texte[array_rand($texte)];
?>

array_rand() gibt einen zufälligen Schlüssel zurück, den du direkt als Index verwenden kannst. Falls du mehrere zufällige Einträge brauchst, übergibst du als zweiten Parameter die gewünschte Anzahl. Dann liefert die Funktion ein Array mit mehreren Schlüsseln zurück.

Praxisbeispiel: Zufällige Begrüßung im Header

Ein typischer Einsatz für Zufallstexte ist eine wechselnde Begrüßung auf der Startseite. Statt immer dasselbe „Willkommen“ zu zeigen, überraschst du deine Besucher bei jedem Aufruf mit einer neuen Nachricht.

<?php

$begruessung = [
'Schön, dass du da bist!',
'Willkommen zurück!',
'Bereit für neues PHP-Wissen?',
'Heute ist ein guter Tag zum Programmieren.',
'Hallo! Was möchtest du heute lernen?',
];
?>
<header>
<h1><?php echo $begruessung[array_rand($begruessung)]; ?></h1>
</header>

Das Prinzip eignet sich genauso für einen „Tipp des Tages“, den du in einer Sidebar oder unter einem Formular einblendest. Einfach die Texte im Array anpassen und an der gewünschten Stelle einbinden.

Zufallstext in eine eigene Datei auslagern

In der Praxis lohnt es sich, den Zufallstext-Code in eine eigene Datei auszulagern. So bleibt dein Haupttemplate übersichtlich und du kannst den Zufallstext an mehreren Stellen wiederverwenden.

<?php

/* zufall.php */
$texte = [
'Willkommen auf unserer Webseite!',
'Tipp: Schau dir unsere neuesten Tutorials an.',
'PHP macht Spaß und ist leicht zu lernen.',
];

echo $texte[array_rand($texte)];
?>

Diese Datei bindest du dann per include() in deine Seite ein.

<?php include 'zufall.php'; ?>

Damit das funktioniert, muss deine Seite eine .php-Datei sein. Falls deine Startseite noch als .html gespeichert ist, benenne sie in index.php um. Die meisten Webhoster unterstützen PHP standardmäßig, aber im Zweifel lohnt sich ein Blick in die Paketdetails.

Zufallstexte aus einer Textdatei laden

Wenn du viele Texte verwalten möchtest, ist ein Array im PHP-Code schnell unübersichtlich. Praktischer ist es, die Texte in eine externe Textdatei auszulagern. Pro Zeile steht ein Text, und PHP liest sie mit file() ein.

<?php

/* texte.txt enthält pro Zeile einen Text */
$texte = file('texte.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

if (!empty($texte)) {
echo $texte[array_rand($texte)];
}
?>

Die Funktion file() liest jede Zeile als eigenes Array-Element ein. Mit den Flags FILE_IGNORE_NEW_LINES und FILE_SKIP_EMPTY_LINES entfernst du Zeilenumbrüche und überspringst leere Zeilen. So kannst du Texte bequem in einem Texteditor pflegen, ohne PHP-Code anfassen zu müssen.

Zufallstext aus einer Datenbank

Bei größeren Projekten liegen Texte oft in einer MySQL-Datenbank. Dort kannst du direkt per SQL einen zufälligen Eintrag abfragen.

<?php

$pdo = new PDO(
'mysql:host=localhost;dbname=meinedb;charset=utf8mb4',
'benutzer',
'passwort'
);

$stmt = $pdo->query(
'SELECT text FROM zufallstexte ORDER BY RAND() LIMIT 1'
);
$zeile = $stmt->fetch(PDO::FETCH_ASSOC);

if ($zeile) {
echo htmlspecialchars($zeile['text']);
}
?>

Beachte, dass ORDER BY RAND() bei sehr großen Tabellen langsam werden kann. Für Tabellen mit wenigen hundert Einträgen ist die Methode aber völlig ausreichend.

Gewichtete Zufallsauswahl

Manchmal sollen bestimmte Texte häufiger erscheinen als andere. Ein Werbebanner für ein neues Produkt soll zum Beispiel dreimal so oft angezeigt werden wie ein allgemeiner Hinweis. Dafür brauchst du eine gewichtete Zufallsauswahl.

<?php

function gewichteterZufall(array $eintraege): string
{
/*
* $eintraege hat die Form:
* ['Text' => Gewicht, ...]
* Je höher das Gewicht, desto häufiger
* wird der Text ausgewählt.
*/
$summe = array_sum($eintraege);
$zufall = mt_rand(1, $summe);
$zaehler = 0;

foreach ($eintraege as $text => $gewicht) {
$zaehler += $gewicht;
if ($zufall <= $zaehler) {
return $text;
}
}

/* Fallback: letzten Eintrag zurückgeben */
return array_key_last($eintraege);
}

$texte = [
'Jetzt neu: Unser PHP-8-Kurs!' => 5,
'Tipp: Regelmäßig üben hilft.' => 2,
'Willkommen auf unserer Seite!' => 1,
];

echo gewichteterZufall($texte);
?>

Die Funktion summiert alle Gewichte, würfelt eine Zahl in diesem Bereich und zählt die Gewichte durch. Sobald die Zufallszahl erreicht ist, steht der Gewinner fest. Im Beispiel oben erscheint der Kurs-Hinweis mit Gewicht 5 fünfmal so häufig wie die Begrüßung mit Gewicht 1.

Verwandte Tutorials

Du möchtest das Thema Zufall in PHP vertiefen? Diese Tutorials passen gut dazu:

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.