Rolf B: PHP: finde in $content alle <p> und erweitere das 3, 6, 9 durch X

Beitrag lesen

Hallo noob-2000,

ein JS Snippet nach 1/3 und 2/3 - das stinkt nach einem Werbebanner…

Ich nehme an, der Content wird auf Bausteinen zusammengesetzt und es ist erst im Nachhinein erkennbar, wo die "beste" Position für die Snippets ist. Der Ansatz, über die Position zu gehen, ist allerdings nicht unbedingt optimal, die Paragraphen können unterschiedlichste Höhe haben.

In PHP sitzt Du doch an der Quelle; kann man da nicht auf inhaltlicher Ebene bessere Möglichkeiten schaffen? Beispielsweise könnte man bei der Generierung von $content an den potenziellen Snippet-Einsetzpunkten einen speziellen Kommentar einsetzen, sowas wie <!-- INSERT YOUR SH1T HERE -->.

Die Suche nach </p> ist noch machbar, bei <p> ist es problematischer, weil es ja auch sowas wie <p class="foo"> geben kann. D.h. du müsstest nach /<p[> ]/ suchen.

Nun ja, jedenfalls kannst Du darüber alle potenziellen Punkte finden. Deren Positionen steckst Du in ein aufsteigend sortiertes Array. Die Drittelung kannst Du nun auf Basis der Indexposition im Text machen (d.h. wenn l = strlen($content), dann berechne l/3 und 2l/3 und suche im Array die Einträge, die diesen Werten am nächsten kommen), oder auf Basis der Paragraphenanzahl. D.h. du könntest bei 7 Paragraphen dein Snippet hinter den zweiten (7/3=2,33 -> 2) und fünften (27/3=4,66 -> 5) setzen, unabhängig von der Paragraphengröße.

Wenn Du deine Snippets von hinten nach vorne einsetzt statt von vorne nach hinten, dann kann es Dir egal sein, dass sich durch das Einsetzen die Positionen in $content verschieben.

Rolf

--
sumpsi - posui - obstruxi