regex prof gesucht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

regex prof gesucht

Beitrag von Ambience »

Nabend,

ich will, dass

Code: Alles auswählen

"// testkommentar"
nicht ersetzt wird...

Code: Alles auswählen

// testkommentat
soll aber ersetzt werden..

Mein code funktioniert aber leider nicht:

Code: Alles auswählen

$text = preg_replace('/(^\"|\')(\/\/)(^\"|\')/is', 'k', $text);
edit:

und warum ergibt:


Danke

Code: Alles auswählen

$line_rows[$i] = preg_replace('/(\/\/)(.*?)/is', ".", $line_rows[$i]);
das da:
.
. Testkommentar
.
statt:
.
. ................
.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Zu 1: Versuchs mal mit http://de.php.net/manual/de/ref.tokenizer.php

Zu 2: Na weil du das so angegeben hast: Zwei / und dann so wenig Zeichen wie möglich. Und "so wenig Zeichen wie möglich" sind in dem Fall eben keine. Versuchs mal stattdessen mit "#(?<=\\/\\/).*$#"
KB:knigge
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

hmm deine 2.te version funktioniert nicht..

da bekomm ich dann: //.//.//.

ich brauch wie gesagt, das er das // am anfang sucht und fals noch was hinter dem // steht, das auch mit berücksichtigen

edit: nochmal der code:

Code: Alles auswählen

<?php

function parse_php($text)
{
   
    $text = str_replace('<', '<', $text);
    $text = str_replace('>', '>', $text);
      
    $text = preg_replace('/(\&lt\;\?php|\&lt\;\?)/is', '<span style="color:#ff0000;font-weight:bold;">$1</span>', $text);
    $text = preg_replace('/(\?\&gt\;)/is', '<span style="color:#ff0000;font-weight:bold;">$1</span>', $text);
      
    $text = preg_replace('/(\/\/)(.*?)/is', '<span style="color:#c0c0c0;">$1</span>', $text);
        
    
    return  $text;
}

$text = "
<?php

\$test = 'lol'; 
//
//Testkommentar
//


?>";

echo nl2br(parse_php($text));

?>
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

*bump*
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Code: Alles auswählen

$string = '// blahfasel';

echo preg_replace('#(?<=\\/\\/).*$#', '...', $string);
Ausgabe: //...
KB:knigge
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

das FUNKTIONIERT NICHT, wie oft noch? :roll:
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Komisch daß es bei mir funktioniert...dann musst du wohl weiter Experimentieren, bis du eine Lösung gefunden hast, die auch bei dir funktioniert. Wobei ich mir nicht wirklich vorstellen kann, wieso der exakte Code, der bei mir funktioniert, bei dir nicht funktionieren sollte - ausser vielleicht du nutzt noch PHP3.
KB:knigge
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

ja bei dir funktionierts auch, weil du dir zu fein bist, einmal mein code anzugucken, denn dann würdest du rausfinden, das es nicht funktioniert.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

kann mir denn keiner helfen?

Ich will alle kommentare ersetzten, welche nicht in " oder ' stehen...

z.b. soll:
//

und

//test

sowie

// test

oder

//
// test
//
ersetzt werden, aber nicht:
"//"

oder

'//'

oder

"// testtesxt"
Wäre sehr dankbar wenn endlich mal ne Lösung käme...

edit: und '#(?<=\\/\\/ funktioniert nur bei einzeiligen text wie:

// lala

aber nicht bei

//
// lala
//
Antworten

Zurück zu „Coding & Technik“