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: