Replacen zonder vervangen text opnieuw te replacen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Jan terhuijzen

jan terhuijzen

12/04/2014 15:39:55
Quote Anchor link
Hallo,

ik heb een tekst die ik wil replacen in javascript (of zou ook in PHP kunnen).
Die tekst bevat onder andere de tekens + - < > / en keywords zoals class, function, continue
Ik wil die dingen omringen met <span class="operator"> of <span class="
keyword"> tags. Dus vervangen door er span tags omheen te zetten.
Wat dus elke keer mis gaat, is dat de < en > / en andere html tekens in de span tags weer worden vervangen. Ook wil ik later nog tekst tussen aanhalingstekens vervangen, wat weer een probleem zal worden.
Dus als iets in de string is vervangen en er zijn span tags omheen gezet, dan worden daarna bij de eerstvolgende match weer de < en > tekens van de <span> tags vervangen. Dan krijg je ongeveer iets als dit:
<span class="operator><span class="operator">></</span>span><</span>span class="operator><</span>
Iemand die me kan helpen?
 
PHP hulp

PHP hulp

27/11/2024 00:40:23
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/04/2014 15:49:19
Quote Anchor link
Dus je wilt stukjes code netjes een kleurtje geven?

Zoek dan eens op syntax highlighter en dan kom je bijvoorbeeld dit tegen:

http://alexgorbatchev.com/SyntaxHighlighter/
Gewijzigd op 12/04/2014 15:51:30 door Frank Nietbelangrijk
 
Jan terhuijzen

jan terhuijzen

14/04/2014 18:54:44
Quote Anchor link
Ja, maar nu weet ik nog niet hoe je dit oplost?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/04/2014 20:26:38
Quote Anchor link
tja dat is echt niet zo makkelijk.

ik heb een demo gemaakt die gebruik maakt van explode(). Denk niet dat dit goed genoeg is om te gebruiken.
Er zijn nog vele gevallen waarin dit niet gaat werken. Maar het geeft een beetje aan hoe zoiets werkt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php

$t
= "class test { public function render() { echo 'dit is een class'; } } echo 'test';";

// keywords gerangschikt op css classnamen
$colors = array(
    'green' => array('class', 'echo', 'function'),
    'blue' => array('public'),
);


// als eerste explode op '. oneven elementen in de array zijn dan geen tekstblok en even elementen zijn wel een tekstblok
$arr = explode("'", $t);

// ga alleen de even elementen exploden op een spatie
for($i = 0 ; $i < count($arr) ; $i += 2)
{

    $arr[$i] = explode(' ', $arr[$i]);
}


// laat zien tot hoever we nu een array hebben opgebouwd
echo '<pre>';
print_r($arr);
echo '</pre>';

// nu gaan we onze elementen uit de array weer aan elkaar plakken maar we zetten er <span>'s omheen waar we dat willen
$result = '';
foreach($arr as $key => $part)
{

    // als het een even element is
    if($key % 2 == 0)
    {

        foreach($part as $token)
        {

            $spanopen = '';
            $spansluit = '';
            // kleur voor kleur uit de array $colors
            foreach($colors as $key => $color)
            {

                // kijk of deze kleur een keyword heeft dat met ons token voorkomt
                if(in_array($token, $color))
                {

                    $spanopen = '<span class="' . $key . '">';
                    $spansluit = '</span>';
                    break;
                }
            }

            $result .= $spanopen . $token . $spansluit . ' ';
        }
    }

    // als het een oneven element is dan was het een blok tekst. geef deze in het rood weer.
    else
    {
        $result .= '<span class="red">' . "'" . $part . "'</span> ";
    }
}

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.red {
    color:red;
}
.green {
    color:green;
    font-weight:bold;
}
.blue {
    color:blue;
}
</style>
</head>

<body>
<?php echo $result; ?>
</body>
</html>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.