|
| 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("<", "<", $matches[0]);
$match = str_replace(">", ">", $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 før
eller efter din kode så fucker det op.
Hvornår får jeg det med så jeg kan lave mellemrum om til ?
| |
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 før
> eller efter din kode så fucker det op.
>
> Hvornår får jeg det med så jeg kan lave mellemrum om til ?
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("<", "<", $matches[0]);
$match = str_replace(">", ">", $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(" ", " ", $result);
$result = str_replace("\n", "<br />", $result);
$result = str_replace("<span ", "<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.
| |
|
|