[PHP] preg_replace() 'sidan kan inte visas'
Kör preg_replace() på lite html-kod från en wysiwyg för att få in css i inline-style och kunna skicka iväg det som ett mail, men på längre strängar så får jag bara fram 'sidan kan inte visas'.
Så här ser koden ut:
$test = '<h2 style="font-size: 13px; margin-top: 20px; margin-right: 0px; margin-bottom: -10px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 0px; padding-left: 18px; background-image: url(http://www.test.se/test/test.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: 0px 1px; background-repeat: no-repeat no-repeat;">Test:<span class="Apple-style-span" style="font-size: 12px; font-weight: normal;"> </span></h2>';
$hej = 'margin: 20px 0 -10px 0; padding: 8px 0 0 18px; background: transparent url(http://www.test.se/test/test.gif) no-repeat; background-position: 0 1px; font-size: 12px; clear: both';
echo preg_replace('/(<h2)(?:((\s|[^>])*)style="((\s|[^"])*)")?((\s|[^>])*)((\s|\/|\s\/)*>)/', '\1\2 style="'.$hej.'\4"\6\8', $test);
Vad koden gör är alltså att den tar $hej och lägger till i style för h2 i $test, men när css:en som redan står i h2:s style är för lång så får jag helt enkelt bara upp 'sidan kan inte visas'. Att css:en är konstig behöver ni inte bry er om då det bara är ett test.
Scriptet kör egentligen genom alla element och lägger till css, men gjorde om det till lättast enkla kod som reproducerade felet.
Någon som kan komma på en lösning?