login  Naam:   Wachtwoord: 
Registreer je!
 Forum

toepassing str_replace()

Offline mulimans - 19/09/2008 18:51 (laatste wijziging 19/09/2008 18:53)
Avatar van mulimansNieuw lid Dag mensen,
Voor het vervangen van een woord uit een apart tekst-bestand heb ik het volgende script geschreven.

  1. <?php
  2.  
  3. $handle = fopen('log.txt', 'r+');
  4.  
  5. $oud = "Jan";
  6. $nieuw = "Kees";
  7.  
  8. while (!feof($handle))
  9. {
  10. $input = fgets($handle);
  11. $output = str_replace($oud, $nieuw, $input);
  12. $str .= $output;
  13. }
  14.  
  15. rewind($handle);
  16.  
  17. fwrite($handle, $str);
  18.  
  19. ?>


Nu wil ik het voor mijzelf weer iets moeilijker maken door eerst naar een bepaald woord te laten zoeken, en (alleen) als dat woord gevonden is vanaf dat punt verder te zoeken naar het volgende woord, om uiteindelijk dat woord dan te vervangen.

Voorbeeld (log.txt):
  1. Die man daar heet Jan. Hij houdt van appels, maar niet van spruitjes.


Nu wil ik dus dat alleen als het woord 'Jan' is gevonden vanaf dat punt gezocht wordt naar bijvoorbeeld het woord 'spruitjes', welk dan vervangen wordt door een ander woord, van mijn part 'spinazie'.

Weet iemand hoe ik dit voor elkaar kan krijgen?

7 antwoorden

Gesponsorde links
Offline Martijn - 19/09/2008 18:54
Avatar van Martijn Crew PHP explode op 'jan', 1e arraywaarde weghalen en in de rest je str replace gebruiken
Offline Kr4nKz1n - 19/09/2008 18:57
Avatar van Kr4nKz1n Onbekend
  1. <?php
  2.  
  3. $sString = 'Die man daar heet Jan. Hij houdt van appels, maar niet van spruitjes.';
  4.  
  5. $aString = Explode('jan', $sString);
  6. $sString[1] = Str_Replace('spruitjes', 'spinazie', $aString[1]);
  7.  
  8. echo $aString[0].'jan'.$sString[1];
  9.  
  10. ?>


Zoiets denk ik?
Offline Martijn - 19/09/2008 19:08 (laatste wijziging 19/09/2008 19:10)
Avatar van Martijn Crew PHP nee dats niet correct. Want als er 2x jan voorkomt klopt ie al niet meer.

explode op Jan
$temp=$array[0]
array reverse
count array
array_slice *count-1*
array reverse
implode(array)
str_replace()
echo $temp.$resultaat

daz m als t goed is
Offline Kr4nKz1n - 19/09/2008 19:14 (laatste wijziging 19/09/2008 19:20)
Avatar van Kr4nKz1n Onbekend
  1. <?php
  2. $sString = 'Die man daar heet Jan. Hij Jan houdt van appels, maar niet van spruitjes.';
  3.  
  4. $aString = Explode('Jan', $sString);
  5.  
  6. $sStringLast = Str_Replace('spruitjes', 'spinazie', $aString[Count($aString) - 1]);
  7.  
  8. $sStringNormal = '';
  9.  
  10. For($iString = 0; $iString < Count($aString) - 1; $iString++)
  11. {
  12. $sStringNormal .= $aString[$iString].'Jan';
  13. }
  14.  
  15. echo $sStringNormal.$sStringLast;?>


Edit
Dit werkt ;) Zelf getest
Offline mulimans - 19/09/2008 19:58
Avatar van mulimans Nieuw lid Wauw wat een snelle reacties! Bedankt!
Die eerste van Kr4nKz1n was inderdaad bijna wat ik zocht (ondanks een klein foutje, welk ik hieronder hersteld heb).
Maar als Jan er meerdere keren in voorkomt gaat het inderdaad fout.
Net ook de geupdate versie van Kr4nKz1n geprobeerd. Functioneert niet helemaal omdat daarin Jan 1x te veel wordt afgedrukt. Een kleinigheidje verwacht ik, dat makkelijk te herstellen moet zijn.
Ga daar zo even aan rommelen.

  1. <?php
  2.  
  3. $sString = 'Die man daar heet Jan. Hij houdt van appels, maar niet van spruitjes.';
  4. $aString = Explode('Jan', $sString);
  5.  
  6. $sStringLast = str_replace('spruitjes','spinazie',$aString[1]);
  7.  
  8. echo $aString[0].'Jan'.$sStringLast;
  9.  
  10. ?>


Offline Kr4nKz1n - 19/09/2008 20:01
Avatar van Kr4nKz1n Onbekend Met mijn nieuwe code kan er vaker Jan in staan.
Offline mulimans - 20/09/2008 09:03 (laatste wijziging 20/09/2008 09:05)
Avatar van mulimans Nieuw lid Ach nu zie ik het, de dubbele Jan staat nu in $sString.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s