frippzMedlem sedan okt. 200518 inläggDet här var en riktigt krånglig en. Jag har texter i en databas enligt följande:
@ingress:Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum aliquet, tortor vel mattis adipiscing, tortor nulla iaculis enim, vitae placerat risus tellus eget risus. Quisque ante. Phasellus pulvinar. Duis aliquam. Nulla semper. Nam semper mauris fermentum eros.
Vestibulum interdum. Integer pulvinar nisl sed massa. Suspendisse ipsum est, ornare eu, nonummy vitae, blandit quis, diam. Pellentesque posuere neque quis pede. Pellentesque dui. Fusce at justo ut tortor tincidunt pulvinar. Proin vel dolor.
Vad jag vill göra är att söka igenom textens första stycke, ta bort @ingress: och sedan wrappa första stycket med en p-tagg. Eftersom detta ska köras in i MySQL så måste SQL-queries göras (troligen REPLACE(); gissar jag på?). Jag misstänker att man får använda preg_match_all och/eller preg_replace.
Oerhört tacksam för hjälp!
SstevenetMedlem sedan juni 20001 251 inlägg Vill du lösa det helt i SQL, bör frågan flyttas till SQL-forumet.
frippzMedlem sedan okt. 200518 inläggDet vill jag inte och jag tror inte att det går heller.
SstevenetMedlem sedan juni 20001 251 inlägg Vad menar du med wrappa? Kan du inte skriva hur en text ser ut och hur denna text ska se ut efter uppdatering?
frippzMedlem sedan okt. 200518 inlägg
**@ingress:**Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum aliquet, tortor vel mattis adipiscing, tortor nulla iaculis enim, vitae placerat risus tellus eget risus. Quisque ante. Phasellus pulvinar. Duis aliquam. Nulla semper. Nam semper mauris fermentum eros.
Vestibulum interdum. Integer pulvinar nisl sed massa. Suspendisse ipsum est, ornare eu, nonummy vitae, blandit quis, diam. Pellentesque posuere neque quis pede. Pellentesque dui. Fusce at justo ut tortor tincidunt pulvinar. Proin vel dolor.
Ursäkta svengelskan. Jag menar omsluta. Första stycket är en ingress resultatet ska bli:
<p class="ingress">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum aliquet, tortor vel mattis adipiscing, tortor nulla iaculis enim, vitae placerat risus tellus eget risus. Quisque ante. Phasellus pulvinar. Duis aliquam. Nulla semper. Nam semper mauris fermentum eros.</p>
Vestibulum interdum. Integer pulvinar nisl sed massa. Suspendisse ipsum est, ornare eu, nonummy vitae, blandit quis, diam. Pellentesque posuere neque quis pede. Pellentesque dui. Fusce at justo ut tortor tincidunt pulvinar. Proin vel dolor.
AaasahMedlem sedan mars 20034 471 inlägg Pröva:
//Fixar början
$text = str_replace('@ingress:', '<p class="ingress">', $text);
//Vad har du för tecken vid radslut? newline?
$text = preg_replace('\n', '</p>', $text, 1);
//1:an ser till att bara första newline tecknet ersätts
frippzMedlem sedan okt. 200518 inläggTack för svaret aasah! Jag tror inte det finns någon newline utan det är väl en whitespace i MySQL-fältet. Lite osäker på det.
frippzMedlem sedan okt. 200518 inläggNu blev det lite krångligare igen, för jag kom på att jag vill ju även omsluta följande paragrafer med <p></p> (dvs. inte <p class="ingress">).
MatteMedlem sedan aug. 20002 975 inläggÄr det dubbla radbrytningar som betyder nytt stycke?
Eller vad är det säger att det ska bli ett nytt stycke?
frippzMedlem sedan okt. 200518 inläggJa, om databasen jag jobbar med är konsekvent så ska dubbla \n betyda nytt stycke.
MatteMedlem sedan aug. 20002 975 inläggTesta då något i stil med:
$text = "<p>" . preg_replace("/(\r\n|\r|\n){2,}/", "</p>\n<p>", trim($text)) . "</p>";
$text = str_replace('<p>@ingress:', '<p class="ingress">', $text);