Så här hade jag gjort:
$text = "det här är en sträng <sub>som innehåller\nbåde taggar</sub> och <sub>radbrytningar</sub>";
$text = preg_replace('/<sub>(.*?)<\\/sub>(.|$)/is','<small>\\1</small>\\2',$text);
2 svar · 248 visningar · startad av Peeer
$str = "lång lång lång <sub>text</sub> som innehåller<sub>flera</sub> sub-taggar";
$pattern = "/\<sub>([^\[]*)\<\/sub>/i";
$replacement = "<small>$1</small>";
$str = preg_replace($pattern, $replacement, $str);
Fungerar ju inte riktigt som planerat. Resultatet blir
lång lång lång <small>text</sub> som innehåller<sub>flera</small> sub-taggar vilket ju är fel.
Tips på ett korrekt pattern?
r/ så rotar man runt lite bland sina äldre filer och hittar ett fungerande mönster:
/\<sub>(.*?)<\/sub>/i
/r2 trodde jag.. det fungerar inte om det är en radbrytning (\n) mellan sub-taggarna.
/r3 Hehe.. nu har jag löst det (mha sökfunktionen):
/\<sub>((.|\n)+?)<\/sub>/i
Så här hade jag gjort:
$text = "det här är en sträng <sub>som innehåller\nbåde taggar</sub> och <sub>radbrytningar</sub>";
$text = preg_replace('/<sub>(.*?)<\\/sub>(.|$)/is','<small>\\1</small>\\2',$text);
$strInput innehåller en sträng som ser ut ungefär såhär:
<title>Lite text</title>
<link>http://url..</link>
<description>Ytterligare en massa text</description>
Ovanstående matas in i nedstående funktion och meningen är att jag ska få ut något liknande:
<a href="http://url" title="Ytterligare en massa text">Lite text</a>
men det vill sig inte riktigt, utan resultatet blir:
Lite text</a><a href="http://url" title="Ytterligare en massa text">, dvs title-texten kommer först. Någon som vet hur jag löser detta?
$patterns[0] = '/<link>(.*?)<\/link>/is';
$patterns[1] = '/<description>(.*?)<\/description>/is';
$patterns[2] = '/<title>(.*?)<\/title>/is';
$replacements[0] = '<a href="$1" ';
$replacements[1] = 'title="$1" target="_blank">';
$replacements[2] = '$1</a>';
$temp = preg_replace($patterns,$replacements,$strInput);