Testa med:
$linje = str_repeat('-', 40);
$new = "Ny text\n";
$pattern = "/((.*?{$linje}\\s*)+)(.*?{$linje}\\s*)$/s";
$text = preg_replace($pattern, "$1$new$3", $text);
3 svar · 223 visningar · startad av ironhead
Hej! Jag har ett problem med att jag inte vet hur jag ska lyckas söka åt en sträng i en text från mySQLdb:n och infoga en text efter den strängen
tex:
Jag har en text som ser ut såhär:
Hej!
----------------------------------------
svejs!
----------------------------------------
alla
----------------------------------------
roliga
----------------------------------------
då vill jag alltså söka reda på den näst sista streckade linjen och infoga en text efter den... tex:
Hej!
----------------------------------------
svejs!
----------------------------------------
alla
----------------------------------------
(här vill jag ha min text)
roliga
----------------------------------------
Hur i hela friden ska man lyckas med det?
ps. Alla streck är lika långa dvs. 40 st (-) minustecken
Testa med:
$linje = str_repeat('-', 40);
$new = "Ny text\n";
$pattern = "/((.*?{$linje}\\s*)+)(.*?{$linje}\\s*)$/s";
$text = preg_replace($pattern, "$1$new$3", $text);
Om du inte ska ersätta texten utan lägga till kan du prova göra nåt sånt här.
Är det radbrytning efter varje linje? Annars får du ta bort den, använder radbrytning i exemplet.
$str = Texten från databasen;
$spl = "----------------------------------------\n";
$hit = Strängen som du söker efter och ska utöka;
$rows = explode($spl, $str);
foreach ( $rows as $v ) {
if ($v == $hit) {
// Här lägger du in texten å sparar det i $val, typ:
$val = "mer text" . $v;
}else{
$val = $v;
}
$new[] = $val;
}
$str2 = implode($spl, $new);
// Lägg tillbaka $str2 i databasen
Om du däremot inte vet vad det är för text du ska utöka utan det alltid är den näst sista raden med streck du letar efter kan du prova:
$str = Texten från databasen;
$spl = "----------------------------------------\n";
$new_text = "(här vill jag ha min text)\n";
$rows = explode($spl, $str);
$num = count($rows);
$rows[($num - 2)] = $new_text . $rows[($num - 2)];
$str = implode($spl, $rows);
OT: Varför har de gjort så man inte längre kan använda PHP-taggen i forumet? Jag kan då inte använda den, får inga radbrytningar...
lunne82: Det funkade juh kanonbra...tack!
matte: Fick inte ditt att fungera...den skrev inte ut nåt...