Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP regexp probleem!

Anoniem
None
13 antwoorden
  • Hallo,

    Ik ben bezig met een scrippie dat sites on the fly naar morse vertaalt.
    Nu ondervind ik iets raars. Zie voorbeeldcode.

    Het plan is alle HTML, stylesheets and scripts te isoleren, de teksten te vertalen en dan het hele zaakje weer op een hoop te gooien en weer te geven.

    werkend voorbeeld:
    http://www.oersoep.nl/oerbagger/2.php?url=http://www.junkmail.nl/

    Het lijkt dus best te werken, maar soms ook weer helemaal niet:

    http://www.oersoep.nl/oerbagger/2.php?url=http://www.zend.com/manual/

    Ik dacht aan het maximale grootte van $string, maar dat is onzin gebleken… Heeft iemand een idee / suggestie?

    [code:1:b1a4d4830c]
    <?
    // dit werkt

    $string = '<script LANGUAGE="JavaScript">
    blah!
    </script> etcetera…' ;

    if( eregi( '^.*</script[^>]*>', $string, $res ) ){
    echo $res[0];
    }else{
    // geen match
    echo "Why hast thou forsaken me?!?";
    }


    // dit niet

    $array = file( 'http://www.zend.com/manual/', 'r');
    $string = implode( '', $array );

    if( eregi( '^.*</script[^>]*>', $string, $res ) ){
    echo $res[0];
    }else{
    // geen match
    echo "Why hast thou forsaken me?!?";
    }


    ?>
    [/code:1:b1a4d4830c]
  • -> Webprogrammeren?

    ik zou niet alleen verwijzen naar een directory, maar naar het bestand zelf.
  • Die snap ik niet. Gaan de regexps dan wel werken?
    Wat voor speciale uitvoer geeft het dan als ik de webserver laat bepalen welke page hij opstuurt?
    Ik heb het toch maar even getest en ik geloof niet dat het uitmaakt.
  • [quote:b8308871ff="Sjoerd Boerhout"]-> Webprogrammeren?[/quote:b8308871ff]Roger that.
  • Moe die regexp niet non-greedy worden?
    Probeer dit eens:
    if( eregi( '^.*?</script[^>]*>', $string, $res ) )
    Geinig script :P
  • Leek sense te maken, dus ik heb het geprobeerd: geen effect helaas….
  • Hij lijkt het nu wel te doen, waar lag het nou aan?
  • Ik heb de slachtoffer- string in blokjes gehakt…. beetje buffer systeem.

    Niks anders dan om het probleem heenwerken dus.
  • if( eregi( '/^<script.*?<\/script[^>]*>/m', $string, $res ) )

    Misschien zoiets dan?
  • eeehm.. is te proberen…

    Waar is die eerste slash voor, en waarom escape je de andere slash?
  • Die slashes zijn om aan te geven dat het binnen dat gebied om een regexp gaat.
    Die back-slash voor de slash is om die te escapen.
    Die m is de multiline flag.
  • ik dacht dat die handel alleen werkte bij de perl-compatible regexp functies… preg() en zo…
  • Oeps :oops:, je hebt gelijk. Ik werk niet zoveel met PHP.
    Volgens mij moet je dan preg_match gebruiken. Zet dan ook de i flag (case insensitive.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.