/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
syntax highlightning
Fra : scootergrisen


Dato : 07-03-11 16:51

Med highlight_string() man kan highlighte en PHP kode som man ønsker
vist på sin hjemmeside.

Men findes der en function som kan highlighte HTML kode også ?

 
 
Birger Sørensen (07-03-2011)
Kommentar
Fra : Birger Sørensen


Dato : 07-03-11 17:38

scootergrisen kom med denne ide:
> Med highlight_string() man kan highlighte en PHP kode som man ønsker vist på
> sin hjemmeside.
>
> Men findes der en function som kan highlighte HTML kode også ?

HTML er statisk. Der findes ingen funktioner.
Man kan bruge <span class="highlight">highlighted tekst</span>.
Og man kan selv lave en funktion i php, der sætter tags omkring en
given tekst, som man indsætter i sin HTML kode.

function Highlight_HTML( $txt) {
return '<span class="highlight">'.$txt.'</span>';
}

alternativt - men med enkelt apostroffer i HTML'en, hvis man er
ligeglad om det er det ene eller det andet i sin kode:
return "<span class='highlight'>$txt</span>";

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



scootergrisen (07-03-2011)
Kommentar
Fra : scootergrisen


Dato : 07-03-11 17:57

Tænkte om der findes en function i PHP der er forberedt til sådan noget
eller en færdig funktion på nettet.
Gider ikke skrive en selv det lyder meget besværligt da jeg ikke er god
til regulære udtryk.

Andreas Andersen (07-03-2011)
Kommentar
Fra : Andreas Andersen


Dato : 07-03-11 19:41

Den 07-03-2011 16:50, scootergrisen skrev:
> Med highlight_string() man kan highlighte en PHP kode som man ønsker
> vist på sin hjemmeside.
>
> Men findes der en function som kan highlighte HTML kode også ?

Prøvede lige at bikse noget regulært udtryk sammen. Måske nedenstående
gør, hvad du ønsker (gem som testhighlight.php):

<html>
<head>
<style type="text/css">
..tag { color: blue; }
..attribute { color: red; }
..value { color: purple; }
</style>
</head>

<body>

<form action="testhighlight.php" method="post">
<textarea name="tohighlight" rows="20" cols="30"></textarea>
<input type="submit" value="Highlight" />
</form>

<pre>
<?php
function matchCallback($matches) {
   $match = $matches[0];
   $match = str_replace("<", "&lt;", $matches[0]);
   $match = str_replace(">", "&gt;", $match);
   $attributePattern = '/([^=\s]*)\s*=\s*"([^"]*)"/';
   $replace = '</span><span class="attribute">${1}</span>=<span
class="value">"${2}"</span><span class="tag">';
   return '<span class="tag">' . preg_replace($attributePattern, $replace,
$match) . '</span>';
}

if (isset($_POST["tohighlight"])) {
   $tagPattern = "/<[^>]*>/";
   echo preg_replace_callback($tagPattern, "matchCallback",
$_POST["tohighlight"]);
}
?>
</pre>

</body>
</html>

--
Andreas

scootergrisen (08-03-2011)
Kommentar
Fra : scootergrisen


Dato : 08-03-11 18:05

Tak det ser fedt ud med den kode.
Men nu vil jeg jo gerne have at teksten står med de mellemrum jeg bruger
så det er lettere at læse men hvis jeg laver mellemrum om til &nbsp; før
eller efter din kode så fucker det op.

Hvornår får jeg det med så jeg kan lave mellemrum om til &nbsp; ?

Andreas Andersen (08-03-2011)
Kommentar
Fra : Andreas Andersen


Dato : 08-03-11 19:39

Den 08-03-2011 18:05, scootergrisen skrev:
> Tak det ser fedt ud med den kode.
> Men nu vil jeg jo gerne have at teksten står med de mellemrum jeg bruger
> så det er lettere at læse men hvis jeg laver mellemrum om til &nbsp; før
> eller efter din kode så fucker det op.
>
> Hvornår får jeg det med så jeg kan lave mellemrum om til &nbsp; ?

Hvis du har det i en <pre> som jeg havde, kommer mellemrum automatisk
med. Ellers skulle nedenstående version (hvor jeg også lige har lagt det
i en funktion) håndtere whitespace. Opdagede i øvrigt lige ved et
tilfælde, at koden ikke dur før PHP 5.3.

<?php
function matchCallback($matches) {
$match = str_replace("<", "&lt;", $matches[0]);
$match = str_replace(">", "&gt;", $match);
$attributePattern = '/([^=\s]*)\s*=\s*"([^"]*)"/';
$replace = '</span><span class="attribute">${1}</span>=<span
class="value">"${2}"</span><span class="tag">';
return '<span class="tag">' . preg_replace($attributePattern,
$replace, $match) . '</span>';
}

function highlightHTML($html) {   
$tagPattern = "/<[^>]*>/";
$result = preg_replace_callback($tagPattern, "matchCallback", $html);
   $result = str_replace(" ", "&nbsp;", $result);
   $result = str_replace("\n", "<br />", $result);
   $result = str_replace("<span&nbsp;", "<span ", $result);
   return $result;
}

if (isset($_POST["tohighlight"])) {
echo highlightHTML($_POST["tohighlight"]);
}
?>

--
Andreas

scootergrisen (08-03-2011)
Kommentar
Fra : scootergrisen


Dato : 08-03-11 20:17

Tak det ser skide godt ud.
Godt nok er Javascript og CSS jo stadig ensfarvet men det gør ikke så
meget lige nu.

Det er meget lettere at læse med farve på HTML koden nu.

Martin Larsen (08-03-2011)
Kommentar
Fra : Martin Larsen


Dato : 08-03-11 20:40

scootergrisen wrote:

> Tak det ser skide godt ud.

Kan vi se det online?

scootergrisen (08-03-2011)
Kommentar
Fra : scootergrisen


Dato : 08-03-11 22:07

Den 08-03-2011 20:40, Martin Larsen skrev:
> scootergrisen wrote:
>
>> Tak det ser skide godt ud.
>
> Kan vi se det online?

Ja men jeg er igang med at rette på noget andet kode samtidig som ikke
er på plads så venter med at uploade indtil det er færdigt ellers vises
det forkert.

Kim Schulz (08-03-2011)
Kommentar
Fra : Kim Schulz


Dato : 08-03-11 21:01

On Mon, 07 Mar 2011 16:50:30 +0100
scootergrisen <scootergrisen@NOSPANKYOUgmail.com> wrote:

> Med highlight_string() man kan highlighte en PHP kode som man ønsker
> vist på sin hjemmeside.
>
> Men findes der en function som kan highlighte HTML kode også ?

Der findes et php lib som kan syntax highlighte et hav af sprog:
http://qbnz.com/highlighter/
rimeligt let at bruge.

// Inkluder GeSHi library
include('geshi.php');
// lav GeSHi object,med koden der skal parses, sprog opsætning osv
$source = '<html><head></head><body><h1>foobar</h1></body></html>";
$language = 'html';
$path = 'geshi/';
$geshi = new GeSHi($source, $language, $path);

// print den fine nye highlightede kode
echo $geshi->parse_code();



Det kan også nummerere linjere og meget andet sjov.

kim schulz


scootergrisen (10-03-2011)
Kommentar
Fra : scootergrisen


Dato : 10-03-11 17:01

Kan man bruge Geshi til at highlight blandet kode ?

Fordi i nogen af mine eksempler har jeg både HTML, CSS og Javascript
blandet.

Kim Schulz (15-03-2011)
Kommentar
Fra : Kim Schulz


Dato : 15-03-11 20:14

On Thu, 10 Mar 2011 17:00:47 +0100
scootergrisen <scootergrisen@NOSPANKYOUgmail.com> wrote:

> Kan man bruge Geshi til at highlight blandet kode ?
>
> Fordi i nogen af mine eksempler har jeg både HTML, CSS og Javascript
> blandet.
Det erindrer jeg faktisk ikke, men mit gæt er ja.


Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407857
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste