Hey allemaal,

Ik volg de tutorials van thenewboston op youtube.
Bij deze loop ik vast.. : http://www.youtube.com/watch?v=IrV2HrfkTjs

Nu ik dit zelf kan bouwen ben ik begonnen met dingetjes erin te veranderen enz...
...en nu kom ik dit tegen:

als je bijv de zin zoals in de oefening wordt aangegeven gebruikt:
The cat sit on the cat.
En je vervangt het door.
The monkey sit on the monkey.
Dan werkt het perfect.

Nu probeerde ik hetzelfde woord waarna je zoekt er bij te gebruiken dus:

The cat sit on the cat.
Vervangen door
The monkeycat sit on the monkeycat.

Dan klik ik op search and replace maar dan blijft de browser een beetje hangen. En doet verder niks.
Is dit op te lossen?
Zelf kom ik er niet uit.... heb wat dingetjes veranderd maar als beginner lukt het me niet.

Alvast bedankt voor jullie hulp

<?php

$offset = 0;

if (isset($_POST['text'])&&isset($_POST['searchfor'])&&isset($_POST['replacewith'])) {
$text = $_POST['text'];
$search = $_POST['searchfor'];
$replace = $_POST['replacewith'];

$search_lengte = strlen($search);

if (!empty($text)&&!empty($search)&&!empty($replace)) {

while (($zoek_positie = strpos($text, $search, $offset)) !== false) {
$offset = $zoek_positie + $search_lengte;
$text = substr_replace($text, $replace, $zoek_positie, $search_lengte);
}

echo $text;

} else {

echo 'Please fill in all the fields!!';
}

}

?>




<form action="index.php" method="POST">
<textarea name="text" rows="6" cols="30"></textarea><br><br>
Search for: <br>
<input type="text" name="searchfor"><br><br>
Replace with <br>
<input type="text" name="replacewith"><br><br>
<input type="submit" value="Search and Replace">

</form>
Dan is het wel verstandig om je relevante code te geven ;-)
Vergeten haha ... heb de code toegevoegd.
Dat komt omdat je 'cat' vervangt in een while loop. Daardoor zal de vervanger van 'cat' ('monkeycat'), dus ook weer gevonden worden en derhalve ook weer vervangen gaan worden. En die wordt dan ook weer gevonden, enz, enz, enz.
Als je het in deze structuur wilt houden dan zal je of met een placeholder moeten gaan werken (dus eerst 'cat' vervangen door bijvoorbeeld '###' en dat dan vervangen door het echte woord), of eerst alle locaties in de string moeten zoeken en die dan 1 voor 1 (van achteraf!) gaan vervangen met het woord.

Wil je het gelijk handiger doen dan kan je beter met [php]str_replace[/php] gaan werken, dan vervang je alles in 1 keer en heb je van dit hele probleem geen last.
Super!! ik heb het opgelost met str_replace.
Bedankt.

Wat ik alleen nog niet begrijp is... : waarom loopt ie met een substr_replace telkens door de code en met een str_replace niet?

** o nee nog niet opgelost...
ik ga er morgen mee verder.
**

Reageren