Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Ersetzung von nur einem Zeilenumbruch

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 23.03.2008, 22:35

Hallo zusammen,

ich verwende eine Funktion auf meiner Website, die mir etwas Kopfzerbrechen bereitet und zwar folgende:

Code: Alles auswählen

function parse_list($string, $replace) {
        $array = explode&#40;'&#91;*&#93;', str_replace&#40;'<br />', '', stripcslashes&#40;$string&#41;&#41;&#41;;
        $return = array&#40;&#41;;
        foreach &#40;$array AS $val&#41; &#123;
            $val = trim&#40;$val&#41;;
            if &#40;!empty&#40;$val&#41;&#41; &#123;
                $return&#91;&#93; = str_replace&#40;'\1', $val, $replace&#41;;
            &#125;
        &#125;
        return implode&#40;"\n", $return&#41;;
    &#125;
Nun ersetzt diese Funktion ganz oben alle Zeilenumbrüche (<br />).

Die Funktion soll jedoch nur ausschließlich das erste <br /> ersetzen. Leider bekomme ich es einfach nicht hin. Preg_replace führt leider auch nicht zu dem gewünschten Ergebnis unter Nutzung des Limit Parameters.

Wäre klasse, wenn mir da jemand helfen könnte - denn in PHP bin ich nicht wirklich Experte?

Viele Grüße
Mark

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 23.03.2008, 22:59

Ich würde hier nach dem ersten Vorkommen mit strpos() suchen, damit hat man dann die Postion. Und mittels substr() kann man dann wieder den String zusammen führen.

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 23.03.2008, 23:05

Ok, das ist mir zwar von der Logik her klar, aber übersteigt meine Fähigkeiten es in die entsprechende Syntax zu packen

(hättest du einen Vorschlag wie es aussehen müsste?)

Zudem frage ich mich warum es einfach mit preg_replace nicht (zumindest bei meinen Bemühungen) klappt, denn hier gibt es ja den Parameter "Limit".

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 24.03.2008, 17:03

In deinen Beispiel sehe ich zwar nichts von preg_replace(), geht aber natürlich mit Limit 1 auch.
Weis nicht, warum es nicht gehen sollte:

Code: Alles auswählen

error_reporting&#40;E_ALL&#41;; 

// Text bzw. String der durchsucht werden soll  
$string = <<<EOF 
The <br /> Quick 15 Brown <br /> ox Jumped Over The Lazy Dogs. 
The Quick <br /> Brown Fox Jumped Over The Lazy 30 Dogs. 
EOF; 

// das Suchmuster mit Delimiter und Modifer &#40;falls vorhanden&#41;  
$pattern = '~<br />~i'; 

// Ersatzstring  
$ersatz = '';

// Limit preg_replace&#40;&#41; setzen  
$LIMIT = 1; 

// RegEx mit preg_replace&#40;&#41; auswerten  
echo preg_replace&#40;$pattern, $ersatz, $string, $LIMIT &#41;; 

Antworten