Tak, i użyłem tych nawiasów: [] lecz nie przyniosło to spodziewanego efektu. Wiem nawet dlaczego. Proszę zobaczyć:
<?php
function syntax($string)
{
$string=preg_replace('#\"(.*?)"#si', '<span style="color:gray;">"1"</span>', $string); $string=preg_replace("#'(.*?)'#si", "<span style=\"color:gray;\">'1'</span>", $string); 0=>"/[^[<][<span style=\"color:gray;\">\"][<span style=\"color:gray;\">']]W=W[^['<span>][\"<span>][>]]/",
);
0=>"<span style=\"color:#FF00FF;\">=</span>",
);
return $string;
}
$string = "asda=asdsd 'id=dse' \"sdfsdf=\" sdasd=asdad \"asdads=adasd\"";
?>
Znak = zostanie podmieniony na kolorowy tylko wtedy, jeśli nie zawiera po swojej lewej stronie ciągu znaków: <span style="color:gray;">" lub <span style="color:gray;">' lub < oraz gdy nie będzie zawierał po swojej prawej stronie ciągu znaków '</span> lub "</span> lub >.
I działa to dla znaków = umieszczonych miedzy " a " lub 'a', które zamienia na szare i nie koloruje w nich znaku "=". Jest jednak problem. Otóż, po przemianie mojej zmiennej $string wygląda ona tak:
asda=asdsd
<span style="color:gray;">'id=dse'
</span> <span style="color:gray;">"sdfsdf="
</span> sdasd=asdad
<span style="color:gray;">"asdads=adasd"
</span>
Pierwszy znak = umieszczony bez " " lub ' ' też na dobrą sprawę ma po swojej prawej stronie ciąg znaków "<span> '</span> > i dlatego nie jest zamieniony na kolorowy. Podobna sytuacja ze znakiem = umieszczonym kawałek dalej, również nie pomiędzy "a" lub 'a'. Ma na dobrą stronę po prawej stronie ciągi znaków zabronione i po lewej też, dlatego nie jest zamieniany. Nie potrafię sobie z tym poradzić, czy ktoś ma jakiś pomysł?
Pozdrawiam,
ladovnik