PHP preg_replace , & tecken försvinner spacer, kan någon hjälpa mig?

Permalänk
Medlem

PHP preg_replace , & tecken försvinner spacer, kan någon hjälpa mig?

Tjena,

Jag är ingen programmerare men inte helt dum så kan med lite trial and error ofta hitta mig fram till ett bra resultat, dock kan jag inte lösa detta php problem.

Här är koden:

<?php error_reporting (E_ALL ^ E_NOTICE); require "scxml-obj.php"; require "config.php"; $serv1 = new SCXML; $serv1->set_host("$host"); $serv1->set_port("$port"); $serv1->set_password("$password"); if (!$serv1->retrieveXML()) DIE ("$error1"); $con_dsp=$serv1->fetchMatchingTag("STREAMSTATUS"); if (!$con_dsp == "1") DIE ("$error2"); $cur_listen=$serv1->fetchMatchingTag("CURRENTLISTENERS"); if ($cur_listen == "") { $cur_listen = 0; } $trackpattern = "/^[0-9][0-9] /"; $trackreplace = ""; $peak_listen=$serv1->fetchMatchingTag("PEAKLISTENERS"); $max_listen=$serv1->fetchMatchingTag("MAXLISTENERS"); $title=$serv1->fetchMatchingTag("SERVERTITLE"); $song_title=$serv1->fetchMatchingTag("SONGTITLE"); $song_title = preg_replace($trackpattern, $trackreplace, $song_title); $con_hostname=$serv1->fetchMatchingArray("HOSTNAME"); $con_listen=$serv1->fetchMatchingArray("CONNECTTIME"); $con_song=$serv1->fetchMatchingArray("TITLE"); $con_song_print=array_slice($con_song, 1, $maxsongs); $con_time=$serv1->fetchMatchingArray("PLAYEDAT"); if (preg_match ("/^[0-9]{10}$/", $con_time[0])) { for ($i=0; $i<count($con_time); $i++) { $con_time[$i] = $con_time[$i] + $adjust; $con_time[$i] = date('H:i:s', $con_time[$i]); } $playtime = $con_time; } else { $playtime = $con_time; } if ($timeat == "0") { $playat = array_shift ($playtime); } else { $playtime = $playtime; } echo "<html>\n";

Mer echo'd html output här.....

Sen printar den namnen via mer php som ser ut såhär:

while(list($key,$val) = each($con_song_print)) { $con_song_print[$key] = preg_replace($trackpattern, $trackreplace, $con_song_print[$key]); }

Det jag behöver hjälp med är att försöka förstå varför preg_replace ersätter alla tecken som -' etc och behåller mellanslagen men när den ersätter tecknet & så försvinner mellanslagen på båda sidorna av tecknet, fattar inte hur jag fixar detta.

Jag vill alltså behålla spacer före och efter & tecknen.

Koden som jag tror behöver modifieras ligger i första php kodsnippeten:

$trackpattern = "/^[0-9][0-9] /";

Mycket tacksam för svar!

Permalänk

Det blir nog enklare att hjälpa dig om du skriver ut ett par exempel på vad det är du kör regexp på och vad det är i dessa exempel som du vill matcha.