Felix Riesterer: Content: finde das "zweite" öffende <p> und scheibe etwas davor. [Meine Idee nur Bastlerlösung]

Beitrag lesen

Liebe(r) Reto,

  1. Finde das erste Vorkommen mit http://php.net/manual/de/function.strpos.php
  2. Ersetze das erste <p> durch einen Platzhalter <platzhalter_p>
  3. Finde das erste Vorkommen (strpos)

mit einem passenden Suchmuster ginge das mit einem einzigen preg_replace():

$insert = '<a>Link</a>';

$html = preg_replace(
    '~(.*?<p>.*?)(<p)~',
    '$1'.$insert.'$2',
    '<div><p>Trallala</p><p>Fidirallalla</p></div>'
);

// $html = <div><p>Trallala</p><a>Link</a><p>Fidirallalla</p></div>

In den runden Klammern notierte Muster "merkt" sich preg_replace(), wobei jedes Klammernpaar durchnummeriert wird, beginnend mit 1. Daher kann man mit der Zeichenfolge $1 oder auch \1 auf den gefundenen Inhalt Bezug nehmen, der zum Muster in der ersten Klammer passt. Analog geht das auch mit dem Inhalt zum zweiten Muster mit $2 bzw. \2.

Liebe Grüße,

Felix Riesterer.