Regex

mikluxo

Benutzer
Beiträge
16
Hallo.
Ich habe in der Tabelle in einem Feld folgenden Inhalt:

1. hier ein Text

2. hier noch ein Text

3. und hier noch ein Text

Also das alles steht in einem Feld mit Zeilenumbrüchen.

Ich möchte in diesem Inhalt durch einen regulären Ausdruck die Durchnummerierungen (also: "1.", "2." usw. ) finden und diese in einem <b>-Tag einschließen. Ich mache das so:

preg_replace("/^(\d+)\./", "<b>$0</b>", $zeile['text']);

Dieser Ausdruck findet aber nur die erste Nummer, also "1.". Die anderen werden nicht angesprochen. Wieso denn? Das Zeichen ^ bedeutet doch, dass die zu suchende Zeichenkette am Absatzanfang sein soll? Aber die anderen Nummern befinden sich doch auch am Absatzanfang. Ich verstehe nicht, warum sie nicht gefunden werden. Was mache ich falsch?

Vielen Dank.
 
Werbung:
Das ^ ist nur der erste Zeilenanfang, wenn Du Multiline-Mode willst mußt das auch sagen, und wenn mehr als nur einmal ersetzt werden soll dann aus.

Code:
test=*# select regexp_replace(E'1. Zeile 1\n2. zeile 2','^(\d+)\.','<b>\1</b>','gm');
  regexp_replace  
------------------
 <b>1</b> Zeile 1+
 <b>2</b> zeile 2
(1 Zeile)

PostgreSQL, ob das in MySQL auch geht weiß ich nicht.
 
Zurück
Oben