Klarte endelig å løse problemet. Det er tydelig det er mange "quirks" i PHP man må lære seg før man finner noe som fungerer. Har saumfart internett/google for å prøve å finne en løsning på hvordan jeg skal kunne erstatte tegnet "\n"(newline, linefeed, carriage return)...ja ...man kan kalle det så mangt. Poenget er uansett det at jeg var ute etter det å erstatte dette tegnet med strengen "<br />". Så da skjønner man jo hva jeg driver med. Strengen jeg skulle jobbe med kom fra system("cat /proc/cpuinfo"). som da inneholder mange newline-tegn. Det er forholdsvis ganske mye info ang cpu'er uansett hvor gammel den er. Og har man flere kjerner så blir det enda mer dill-dall-info som er ganske repeterendes. Iallefall...

Kommandoen returnerer en streng som inneholder mange linjer med tekst som har "\n" imellom. Hadde det vært windows så hadde det kanskje vært "\r\n" og Mac - "\r". Dette skal vissnok ikkke være noe problem for funksjonen str_replace, for alle parameterene kan erstattes med arrays. Koden min så i utgangs-punktet ut slik(hopper litt fort framover):

$info = system("cat /proc/cpuversion");
echo str_replace(array("\n", "\r","\r\n"), "<br />", $info);

Etter mitt syn og ganske mange andre på nettet så skulle dette fange opp alle typer carriage-returns-varianter for så å erstatte det med html sin versjon av line-break. Men fungerte det? Nei...det gjorde det ikke. Tja...da finner vel ikke str_replace ut av "linebreak"-tegnet i denne strengen da..tenker jeg. Da gjør vi om kommandoen som skal kjøres tenker jeg da...på denne måten:

$info = system("cat -E /proc/cpuversion");

I denne situasjonen tar systemet mitt på serveren og erstatter "\n" med tegnet "$". Det må jo bli lettere å "leke" med...tenker jeg.....men nei...det ble ikke så lett det heller. Da får man plutselig problemet med tolkningen av tegnet '$'. I php så er jo dette et tegn på en variabel...derfor kan det bli problematisk...men jeg prøvde alle versjoner: '$', '\$', "\$", '$$',...som "needle". Men nei....dette blir bare gjetting..og jeg kan ikke skjønne hvordan andre på nettet har fått dette til å fungere i det hele tatt. Jeg saumfarar nettet en gang til og finner et alternativ: "preg_replace". Håpet er i en litt tykkere streng nå...funksjonen har nesten samme funksjonalitet som str_replace, bortsett fra at man større muligheter for å fortelle hva funksjonen skal lete etter. I denne funksjonen så skal man lete etter et "mønster" og ikke en "needle"....ja ja...man kan jo spekulere i hva som er forskjellen...og/eller hvilken av dem som ikke inneholder den andre...er "needle" et sub-set av "mønster"?....ja ja...for å opsummere kort så prøvde jeg å gjøre det samme som jeg prøvde på funksjonen str_replace...bortsett fra at parameteren "mønster" ser omtrentlig slik ut: "/$/". No Good Luck for me...men etter å ha saumfart nettet litt til, kom jeg til en side som fortalte litt om hvordan man kan bruke funksjonen "preg_match"....lykke! Veldig fin side...for eksemplene på psp.net har ikke hjulpet meg: http://lzone.de/PHP%20preg_match%20Examples. "Mønster"(1te parameteren), tilo preg_match fungerer på samme måte som på preg_replace. Så da har jeg i det minste denne linjen:

$info2 =  preg_replace('/[$]{1}/', "<br />", $info);

en første parameteren forteller funksjonen at dne skal søke etter ETT tegn som er lik '$' og så erstatte det med "<br />". Enkelt og greit...nei...det er det ikke...desverre....dette gjorde ingenting....egentlig gjorde den det, men jeg forteller historien i litt feil rekkefølge, men for å komme til saken: En eller annen plass så hadde jeg lest om en person som hadde hatt problemer med å skrive til "output bufferet". Han hadde brukt funksjonen ob_start( )...osv..osv...for å få sin output på riktig plass. Dette var egentlig ikke mitt problem, men jeg tenkte at: Vi har ikke noe å tape iallefall. Jeg endte opp med denne koden til slutt:

ob_start();
system("cat -E /proc/cpuinfo");
$info = ob_get_contents();
ob_end_clean();
$info2 =  preg_replace('/[$]{1}/', "<br />", $info);
echo $info2;

Og det fungerte! Men hvorfor har jeg absolutt ingen anelse om. Når jeg bruker funksjonen "system("cat -E /proc/cpuinfo"))" så ble outputten av funksjonen skrevet til rett plass, og det skulle i utgangspunktet ikke ha vært noe problem, men men...jeg skal legge dette problemet dødt og ikke prøve å tenke så mye på det. Veldig irriterendes... 

Bare for å utdype hva som fungerer for meg:

ob_start();
system("cat -E /proc/cpuinfo");
$info = ob_get_contents();
ob_end_clean();
$info2 =  preg_replace('/[$]{1}/', "<br />", $info);
echo $info2;

For å slippe å skrive dette her flere ganger så kan man også lage en funksjon av det. Forholdsvis greit. Har testet denne versjonen, men ikke "extensively"....har ikke gjort noen form for sjekk på parameterene. så skal man bruke den så bør parameterne være riktig.

function system_out($cmd, $preg_needle, $replacement)
{
  ob_start();
  system($cmd, $retval);
  if($retval != 0)
    return NULL;
  $info = ob_get_contents();
  ob_end_clean();
  $info2 = preg_replace($preg_needle, $replacement, $info, -1, $count);
  return $info2;
}

 

Grunnen til at jeg kom opp i dette var 1: Jeg kjedet meg og ville skrive ut server-info på nettet(http://xn--norskesk-c5a.no/srvrnfo/)..jeg hadde akkurat skiftet HW på serveren. Dvs. faktisk fått en dedikert server for web-server og database. Er det ikke det det heter? Dedikert server? Tror det. Fram til noen dager siden så hadde web-serveren og databasen tuslet i bakgrunnen på arbeidsstasjonen min. Det har faktisk gått veldig bra. Ikke lagt merke til noen ting faktisk. Har en gammel i7 versjon: 920. Ikke det at det er så veldig mye trafikk men serverene tar veldig mye minne. Speesiellt itreed. Så nå får jeg all minnet for meg selv...yay... 

Ja ja..nå skal jeg virkelig gjøre som jeg sa der opp...glemme hele greia...og kanskje gjøre noe fornuftig...:S