Gedeelte van waarde vervangen tot bepaalde inhoud

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel van Dijk

Marcel van Dijk

06/03/2009 23:03:00
Quote Anchor link
Op dit moment ben ik bezig een robot voor een zoekmachine op een intranet te bouwen, nou zit ik met het probleem dat ik niet weet hoe ik de inhoud van een waarde tot en met een bepaalde inhoud moet verwijderen.

Ik dacht dit eigenlijk doen met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
        $broncode
= (file_get_contents('URL'));
        $inhoud= "%<div id=\"content\">";
        $code1= str_replace($inhoud, "", $broncode);
?>


Maar dit werkt niet. Ook het % teken buiten de haakjes heeft geen effect. Volgens mij zit ik volledig op het verkeerde spoor...

Iemand een idee?
 
PHP hulp

PHP hulp

23/12/2024 11:44:08
 
Eddy E

Eddy E

07/03/2009 08:16:00
Quote Anchor link
Je moet gaan kijken naar de ereg_- of preg_-functies.
Die kunnen tekst tussen 2 tags uit halen.

Zelf gebruik ik deze functie:

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
<?php
// functie verkrijg_string_tussen
// syntax: verkrijg_string_tussen($string, $begin, $einde);
// voorbeeld: verkrijg_string_tussen("Tekst welke <b>vet</b> is gemaakt.", "<b>", "</b>"); // geeft "vet"
// voorbeeld: verkrijg_string_tussen("De naam is: Sinterklaas.", ":", "."); // geeft "Sinterklaas"


function verkrijg_string_tussen($tekst, $begin, $einde)
    {

    // maak de $tekst iets langer
    $string = " ".$string;
    
    // zoek locatie van $begin
    $positie_begin = strpos($tekst, $begin);
    
    // als er geen $begin is gevonden
    if ($positie_begin == 0)
        {

        // return niets terug (maar geen false!)
        return "";    
        }

    
    // geef positie van begin aan
    $positie_begin += strlen($begin);
      
    // bereken lengte van $tekst die teruggegeven moet worden
    $lengte_tekst = strpos($tekst,$einde,$positie_begin) - $positie_begin;
    
    // geef gepaste lengte terug
    return substr($tekst,$positie_begin,$lengte_tekst);
    }


?>


Persoonlijk vind ik dat makkelijker dan een ereg, maar het is wel minder geavanceerd en het is 'gevoeliger'.
 
Robert Deiman

Robert Deiman

07/03/2009 09:29:00
Quote Anchor link
@Eddy erkelens

Als je het bepalen van de positie doet met strtolower(); om de waarden dan maakt het qua hoofdletters niet meer uit hoe het eruit ziet. Dat maakt de functie al een stuk beter bruikbaar, omdat je dan niet op hoeft te letten hoe het er qua hoofdletters uitziet.

Verder wel een grappig stukje code. (preg_replace is waarschijnlijk wel sneller... ;))
 
Willem Jan Z

Willem Jan Z

07/03/2009 10:05:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $string
= 'Veel blala, met
    een <div id="ander">div </div> en
    een <br /> maar nu pas de <div id="content">met de
    inhoud e.d.</div> en nog meer content'
;
    preg_match('/(.*)(<div id="content">(.*)<\/div>(.*))/si',$string,$content_ea);
    preg_match('/(.*)(<div id="content">(.*)<\/div>)(.*)/si',$string,$content);
    echo 'Alleen content:'.$content[2];
    echo '<br />Ook achter de content'.$content_ea[2];
?>
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 



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.