Avatar billede sorensen_123 Nybegynder
19. december 2008 - 15:00 Der er 4 kommentarer og
1 løsning

Behandle PHP kode i string

Hejsa,

Jeg sidder og skriver et program, som kan finde og behandle noget PHP kode i en string.
Denne string kunne eksempelvis være:
<?
include("inc/db.php");
include("inc/layout.php");
print_header();
?>
<div>
<b>Dette er noget HTML</b>
</div>
<?
print_footer();
?>

Så, det jeg vil er, at jeg vil have fundet ALT php kode i string og behandle det.
<? og ?> skal ikke være med, så det er kun det, der er inde imellem php-tagsne (og skal IKKE røre andet end det imellem de tags :) ).

De tags skal så behandles med min funktion parsePHP, som dette:
parsePHP(currentPHPforeach);

Efter behandlingen skal jeg dermed ende ud med at min string er blevet behandlet på denne måde:
parsePHP(parseførste);
<div>
<b>Dette er noget HTML</b>
</div>
parsePHP(parseAndet);


Har prøvet en del med regex, men kan ikke få det til at fungere.

Er der nogen der kan hjælpe mig med det?
Avatar billede kalp Novice
19. december 2008 - 16:09 #1
benyt denne regexp..
(<?)[\(\)""\;\n\ra-zA-Z./:&\\d_-]+(?>)

skal måske have flere tilføjelser men det skal bare sættes ind mellem [ <---> ]

tag'ene hvis der mangler noget:)
Avatar billede kalp Novice
19. december 2008 - 16:10 #2
hov.. det skulle ikke have været et svar.. endnu i hvertfald:S

du må spørge hvis du har spørgsmål.
prøv og leg lidt med det først=)
Avatar billede arne_v Ekspert
19. december 2008 - 16:17 #3
Forslag:

using System;
using System.Text.RegularExpressions;

namespace E
{
    public class Program
    {
        private static string parsePhp(string php)
        {
            return "#" + php + "#";
        }
        private static readonly Regex re = new Regex(@"(<\?)(.*?)(\?>)", RegexOptions.Compiled | RegexOptions.Singleline);
        public static string Parse(string s)
        {
            string res = s;
            foreach(Match m in re.Matches(s))
            {
                res = res.Replace(m.Groups[0].Value, parsePhp(m.Groups[2].Value));
            }
            return res;
        }
        public static void Main(string[] args)
        {
            string s = @"<?
include(""inc/db.php"");
include(""inc/layout.php"");
print_header();
?>
<div>
<b>Dette er noget HTML</b>
</div>
<?
print_footer();
?>";
            Console.WriteLine(Parse(s));
        }
    }
}
Avatar billede sorensen_123 Nybegynder
15. marts 2009 - 18:11 #4
Lukker igen.
Avatar billede arne_v Ekspert
15. marts 2009 - 18:59 #5
Og du kunne ikke bruge nogle af forslagene ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester