Gå til innhold

Printe ut deler av tekstfil med ulike farger


Anbefalte innlegg

Skrevet

Jeg har følgende tekstfil :

 

#!/bin/bash

clear

echo "Hello $USER"

echo "Today is ";date

echo "Number of user login :" ; who | wc -l

cal

exit 0

 

Jeg prøver å skrive ut ord i tekstfilen med ulik farge.

Nedenfor er php filen min :

 

 

<?
$text = file("fil.txt");

foreach($text as $value) {
if($value=="echo") {
 echo "<font color=blue>$value</font><br>";
}
elseif($value=="cal") {
 echo "<font color=green>$value</font><br>";
}
elseif($value=="clear") {
 echo "<font color=brown>$value</font><br>";
}
elseif($value=="exit") {
 echo "<font color=gray>$value</font><br>";
}
else {
 echo "<font coor=black>$value</font><br>";
}
}
?>

 

 

Dette fungerer desverre ikke. Kan noen hjelpe meg med dette ?

På forhånd takk:)

Videoannonse
Annonse
Skrevet

Prøv med:

<?php
$text = file("fil.txt");

foreach($text as $value) {
if(preg_match("/echo(.*?)/", $value)){
echo "<font color=blue>$value</font><br>";
}
(preg_match("/cal(.*?)/", $value)){
echo "<font color=green>$value</font><br>";
}
(preg_match("/clear(.*?)/", $value)){
echo "<font color=brown>$value</font><br>";
}
(preg_match("/exit(.*?)/", $value)){
echo "<font color=gray>$value</font><br>";
}
else {
echo "<font coor=black>$value</font><br>";
}
}
?>

Skrevet

Takk for hjelpen. Det er bare ett problem.

 

På linjene med echo så skrives hele linjen ut med blå farge.

Det jeg ønsker er at kun echo skal skrives ut med blå farge.

 

I tillegg prøver jeg å få " tegnet skrevet ut med brun farge

og $ tegnet til å skrives ut med grønn farge.

 

Håper du forstår hva jeg mener:)

Skrevet
Axentrix, det virker åpenbart at du vet om funksjonen foreach, hvorfor bruke du da for() og count() i tråden din ovenfor?

Fordi med den for-loopen er det lettere å kunne legge til felre redigeringsmuligheter, for hver string. Og også behandle dem senere.

Skrevet

Den loopen vil gjøre akuratt det samme som en foreach. Alt du gjør er å telle antallet i arrayen, isteden for å bruke arrayen direkte. Så lenge det er alt du gjør, for det er alt du gjør, er det både tungvindt å bruke to andre funksjoner for å gjøre det samme som en annen gjør - i tillegg er det ikke en god kodestil.

Skrevet (endret)

Nå, da:

<?php
$text = file_get_contents("fil.txt");

$text = str_replace("echo", "<font color=\"blue\">echo</font>", $text);
$text = str_replace("cal", "<font color=\"green\">cal</font>", $text);
$text = str_replace("clear", "<font color=\"brown\">clear</font>", $text);
$text = str_replace("exit", "<font color=\"grey\">exit</font>", $text);
$text = str_replace("\"", "<font color=\"brown\">\"</font>", $text);
$text = str_replace("\$", "<font color=\"green\">\$</font>", $text);
echo $text;
?>

 

EDIT: Misbruk av RegEX

Endret av Judofyr
Skrevet

Judofyr:

  • str_replace kan ta imot arrays, unødvendig med alle de funksjonskalla
  • Ser ingen grunn til å bruke «"», «'» er (marginalt) kjappere, gir deg reinere kode (separere variabler og tekst), og du slipper å escape forkomster av «"».
  • <font> er ut
  • Så du i det heletatt på tokenizer-funksjonene som jeg lenka til?

Skrevet

Det er ikke ofte at jeg er enig i at ' er bedre enn ". I vanlige fall eksisterer det ingen forskjell, heller ikke en marginal forskjell. Men det er ikke det som er argumentet, men nettopp det at i dette tilfellet så vil det gi en renere kode, og du slipper å escape tegn gjør at ' er mer egnet.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...