5 Stimmen

php: br-Tags vom Anfang eines Strings abschneiden?

Ich weiß das:

preg_replace('<br\s*\/?>', '', $string);

entfernt alle br-Tags aus $string...

Wie können wir alle <br><br/><br /> Tags nur, wenn sie ganz am Anfang von $string stehen? ($string ist in meinem Fall html-Code mit verschiedenen Tags...)

20voto

Konrad Rudolph Punkte 503837

Fügen Sie einfach einen entsprechenden Anker ( ^ ) :

preg_replace('/^(?:<br\s*\/?>\s*)+/', '', $string);

Dies entspricht mehreren <br> s zu Beginn der Zeichenkette.

(?:…) ist eine nicht fangfähig gruppieren, da wir die Klammern hier nur verwenden, um den Ausdruck zu gruppieren, nicht um ihn zu erfassen. Der Modifikator ist nicht unbedingt notwendig - (…) würde genauso gut funktionieren, aber die Engine für reguläre Ausdrücke müsste mehr Arbeit leisten, weil sie sich dann die Position und Länge jedes erfassten Treffers merken muss.

5voto

Gumbo Punkte 617646

Sie haben die Begrenzungszeichen für PCRE in Ihrem regulären Ausdruck. Versuchen Sie dies:

$string = preg_replace('/^\s*(?:<br\s*\/?>\s*)*/i', '', $string);

Dabei werden auch führende Leerzeichen vor, zwischen und nach den Zeilenumbruch-Tags entfernt.

Eine Erklärung:

  • ^\s* passt auf alle Leerzeichen am Anfang der Zeichenkette
  • (?:<br\s*\/?>\s*)* wird auf null oder mehr Vorkommen von BR Tags (sowohl HTML als auch XHTML), gefolgt von optionalen Leerzeichen

2voto

Salman A Punkte 246207
$string = preg_replace( '@^(<br\\b[^>]*/?>)+@i', '', $string );

Sollte passen:

<br>
<br/>
<br style="clear: both;" />
etc

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X