list-style-image mit Zufallsbild

Wie sieht es denn bei dir im Code aus?

Kannst du nicht einfach mit einer Schleife arbeiten?

PHP:
<ul>
<?php for($i=0;$i<$irgendwas;$i++){ 
        echo("<li style='list-style-image: url(images/images/random.php);'>");
        echo($text[$i]);
        echo("</li>");
}
</ul>
 
Hallo Steusi,
das könnte ich bestimmt. Macht nur in diesem Fall nicht so viel Sinn.
Der Textinhalt wird in einem CMS-Backend mit einem Editor geschrieben und in einer Datenbank abgelegt. Sicher könnte ich die Ausgabe so Steuern das allen Listen das Element hinzugefügt wird. Ist aber viel zu aufwändig und unflexibel. Genauso könnte ich schon beim Textschreiben das Element einfügen. Ist aber genauso aufwändig und umständlich.

Maik
Nein, random.php steht nur einmal im stylesheet und wir demnach nur einmal generiert. Ob für background image oder list-style-image ist dann doch egal.
Ich lasse mich aber gerne mit einem Beispiel vom Gegenteil überzeugen.
 
Maik
Nein, random.php steht nur einmal im stylesheet und wir demnach nur einmal generiert. Ob für background image oder list-style-image ist dann doch egal.
random.php müsste für jeden einzelnen Listenpunkt definiert werden, schliesslich willst du mehrere unterschiedliche Bullet-Grafiken in einer Liste einsetzen.

mfg Maik
 
Hi,

ich hab da etwas ausprobiert, das geht ganz bestimmt noch einfacher.
Vielleicht hilfts ja weiter: (Wenig getestet, aber funktioniert wohl)
PHP:
// Hier die Bilder noch einlesen , statt das $pics Array
function _randomPic() {
	$pics = array('img/1.gif','img/2.gif','img/3.gif','img/4.gif','img/5.gif','img/6.gif','img/7.gif');
	
	return $pics[rand(0,count($pics)-1)];
}

// Text der aus der Textarea kommt
$text = "<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua.</p>
<ul>
<li>Punkt 1</li>
<li>Punkt 2</li>
<li>Punkt 3</li>
<li>Punkt 4</li>
</ul>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua.</p>";

$pattern = '/(<li>)(.*?)(<\/li>)/';

preg_match_all($pattern,$text,$out);

$listElements = count($out[1]);

$retVal = '';
for ($i = 0; $i < $listElements; ++$i) {
	$retVal .= '<li style="background-image:url(' . _randomPic() . ');">' . $out[2][$i] . '</li>' . "\n";
}

$pattern = '/(.*)(<ul>)(.*?)(<\/ul>)(.*)/s';
$replace = '$1$2' . $retVal . '$4$5';

print preg_replace($pattern,$replace,$text);
 
Zuletzt bearbeitet:
Zurück