Gedeelte van waarde vervangen tot bepaalde inhoud
Ik dacht dit eigenlijk doen met:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$broncode = (file_get_contents('URL'));
$inhoud= "%<div id=\"content\">";
$code1= str_replace($inhoud, "", $broncode);
?>
$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?
Die kunnen tekst tussen 2 tags uit halen.
Zelf gebruik ik deze functie:
Code (php)
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
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);
}
?>
// 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'.
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... ;))
Code (php)
1
2
3
4
5
6
7
8
9
10
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];
?>
$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