Wie helpt mij op weg? THANX!
Ik ben nieuw hier op ’t forum; ben net gestart om wat dieper in PHP te duiken, maar heb een vraagje waar ik niet uitkom.
Iemand heeft ooit een php code aan me gegeven om een bepaalde pagina op mijn site te automatisch te laden, zodat ik zelf niet de hele tijd hoef te updaten. De pagina staat om het makkelijk te maken op de volgende locatie: http://www.domein.com/pagina.html
Ik kan twee woorden vervangen voor mijn eigen woorden. “Woord1” wordt door het scriptje vanzelf “vervanging1” en hetzelfde voor “woord2”. Dit wordt “vervanging2”. Nu wil ik nog meer woorden vervangen (oftewel “woord3” naar “vervanging3”, “woord4” naar “vervanging4”, etc. Het moet heel makkelijk zijn, maar ik heb echt alles geprobeerd. Inmiddels heb ik zelfs enkele PHP tutorials gelezen, dus weet inmiddels al aardig wat van de regular expressions, maar ik kom er niet uit. Wie kan mij hiermee verder helpen? Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$a = file_get_contents("http://www.domein.com/pagina.html");
$b = preg_replace("/woord1/", "vervanging1",$a);
echo preg_replace("(woord2)", "vervanging2",$b,1);
?>
$a = file_get_contents("http://www.domein.com/pagina.html");
$b = preg_replace("/woord1/", "vervanging1",$a);
echo preg_replace("(woord2)", "vervanging2",$b,1);
?>
Alvast bedankt!
Stijn
Ik weet dat die ,1 in regel 5 betekent dat er maar één keer vervangen hoeft te worden... Dus die moet eigenlijk weg in het voorbeeld.
Stijn
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$a = file_get_contents("http://www.domein.com/pagina.html");
$b = preg_replace("/woord1/", "vervanging1",$a);
echo preg_replace("(woord2)", "vervanging2",$b);
?>
$a = file_get_contents("http://www.domein.com/pagina.html");
$b = preg_replace("/woord1/", "vervanging1",$a);
echo preg_replace("(woord2)", "vervanging2",$b);
?>
Is zoiets wat je zoekt?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sString = 'Een string waarin {woord} vervangen wordt door {naam} en dus uiteindelijk {kleur} het {plaats} resultaat is';
$aOrigineel = array('{woord}', '{naam}', '{kleur}', '{plaats}');
$aVervanging = array('foo', 'bar', 'groen', 'tweede');
echo str_replace($aOrigineel, $aVervanging, $sString);
?>
$sString = 'Een string waarin {woord} vervangen wordt door {naam} en dus uiteindelijk {kleur} het {plaats} resultaat is';
$aOrigineel = array('{woord}', '{naam}', '{kleur}', '{plaats}');
$aVervanging = array('foo', 'bar', 'groen', 'tweede');
echo str_replace($aOrigineel, $aVervanging, $sString);
?>
Kan ik dit scriptje ook gebruiken in combinatie met "file_get_contents"? In je voorbeeld kan ik idd wel makkelijk de woorden vervangen als ik als string een stuk tekst opgeeft.
Maar in mijn geval is $sString een extern bestand dat staat op "http://www.domein.com/pagina.html" en de tekst veranderd voortdurend.
Is er een makkelijke combinatie mogelijk tussen "file_get_contents" en jouw voorbeeld?
Thanks again,
Stijn
Harstikke bedankt voor de snelle hulp!
Ik zal er verder mee gaan stoeien!
Cheers,
Stijn
Edit:
Shit, gesnapt. Zo dan.
Shit, gesnapt. Zo dan.
Deze is misschien iets makkelijker bij te houden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sString = 'Een string waarin {woord} vervangen wordt door {naam} en dus uiteindelijk {kleur} het {plaats} resultaat is';
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats} => 'tweede'
);
echo str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
?>
$sString = 'Een string waarin {woord} vervangen wordt door {naam} en dus uiteindelijk {kleur} het {plaats} resultaat is';
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats} => 'tweede'
);
echo str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
?>
Gewijzigd op 01/01/1970 01:00:00 door Arend a
Jep, die is een stukje netter inderdaad. Je mist alleen een ' achter foo.
Weten jullie ook of het mogelijk is om een hele TAG te vervangen? Ik wil namelijk eeen tag met de class="comments" weghalen.
Bij preg-replace zou ik dan:
"/<div class=\"comments\".*?<\/div>/"
er in zetten, maar deze methode pakt geen speciale tekens zoals de punt, de ster en de escapes.
Wellicht weer een makkelijke oplossing?
Alvast bedankt,
Stijn
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sString = 'Hier staat niets <div class="comments">Speciale tekens ^!@#*.\"</div> tussen...';
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
echo $sString;
?>
$sString = 'Hier staat niets <div class="comments">Speciale tekens ^!@#*.\"</div> tussen...';
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
echo $sString;
?>
Ik bedoel eigenlijk in één PHP sciptje samen.
Dus én een preg_replace én een array dus in één script, zodat ik het makkelijk kan houden in één script.
Ik wil een standaard scriptje maken, waarbij ik én enkele hele TAGs in één keer kan vervangen (met iets van .*? ) én waarbij ik woorden en andere dingen kan vervangen.
Ik los het nu op door twee scipts te maken. Eén voor preg-replace en daarna laat ik dat bestand grabben via file_get_contents waar ik dan nog een string_replace overheen gooi. Een beetje omslachtig dus, maar ik ben ook pas net bezig...
Bedankt weer als jullie nog wat weten!
Stijn
PS Arend, ik mis ook nog een ' achter '{plaats}
Wat houdt je tegen om beide bewerkingen in 1 scriptje uit te voeren? Je kunt prima eerst de preg_replace() uitvoeren en daarna de str_replace() met de array's...
Wat houdt je tegen om beide bewerkingen in 1 scriptje uit te voeren?
Nou, ik heb veel geprobeerd, maar het werkte echt niet. Ik kreeg het niet aan de praat...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
$sString = str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo $sString;
?>
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
$sString = str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo $sString;
?>
Niet getest, maar zoiets zal zeker werken!
Ik was zoiets aan het maken als het volgende wat dus nergens op slaat en aantoont dat ik echt een beginner ben die er nog niet veel van snapt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sString = file_get_contents('http://www.extern.site/bestand.html');
$aVervanging = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$bVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
echo str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo preg_replace("(<head>.*?<\/head>)", "xxxxxxxxxx",$b);
?>
$sString = file_get_contents('http://www.extern.site/bestand.html');
$aVervanging = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$bVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
echo str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo preg_replace("(<head>.*?<\/head>)", "xxxxxxxxxx",$b);
?>
iig super bedankt!
Volgens mij kan je hiermee nu maar één TAG vervangen (de class="comments" in het voorbeeld) als ik het goed heb. Zou je nog meer preg_replce vervangingen kunnen doen door iets toe te voegen???
Als ik té lastig ben zeg het maar hoor, want wat je net hebt gepost is al super waardevol voor me!
Cheers,
Stijn
Tuurlijk, als je wilt kun je 100 versies van preg_replace() achter elkaar zetten. Of het nuttig is, is een tweede maar het kan wel...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
preg_replace('#<div class="post">.*?</div>#is', '', $sString);
preg_replace('#<div class="rating">.*?</div>#is', '', $sString);
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
$sString = str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo $sString;
?>
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
preg_replace('#<div class="post">.*?</div>#is', '', $sString);
preg_replace('#<div class="rating">.*?</div>#is', '', $sString);
$aVervanging = array(
'{woord}' => 'foo',
'{naam}' => 'bar',
'{kleur}' => 'groen',
'{plaats}' => 'tweede'
);
$sString = str_replace(array_keys($aVervanging), array_values($aVervanging), $sString);
echo $sString;
?>
Thanx again :)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$sString = preg_replace('#<div class="post">.*?</div>#is', '', $sString);
$sString = preg_replace('#<div class="rating">.*?</div>#is', '', $sString);
// etc...
?>
$sString = file_get_contents('...');
$sString = preg_replace('#<div class="comments">.*?</div>#is', '', $sString);
$sString = preg_replace('#<div class="post">.*?</div>#is', '', $sString);
$sString = preg_replace('#<div class="rating">.*?</div>#is', '', $sString);
// etc...
?>
Je moet het resultaat van de preg_replace natuurlijk wel weer opslaan in een variabele. Anders kun je er niet verder mee werken..
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ik heb het net even getest en het werkt echt geweldig!
Respect, Hulde! Hoe kan ik je bedanken?
Stijn