Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] losowa podmiana wyrazów w tekście
Forum PHP.pl > Forum > Przedszkole
sirkus
witam,

czy mógłby mi ktoś powiedzieć jak powinien wyglądać skrypt który po otrzymaniu tekstu

"Egipt {jest|znajduje się} w Afryce." zostanie przekształcone albo w "Egipt jest w Afryce." albo w "Egipt znajduje się w Afryce."

czyli poprostu wyrazy z pomiędzy znaków { } będą losowane i wyświetlany jeden z nich


miałem kiedyś gotowy skrypt, ale gdzieś zginął a nie mogę odnaleść bloga na którym się znajdował a moje próby stworzenia tego samemu nie powiodły się bo jakoś z wyrażeniami regularnymi nie jestem za pan brat
Wicepsik
  1. <?php
  2. $a = array('jest', 'znajduje się');
  3. echo 'Egipt '.$a[array_rand($a)].' w Afryce.';
  4. ?>
dr_bonzo
  1. <pre><?php
  2.  
  3. $str = "Egipt {jest|znajduje się} w Afryce. {Manual|Dokumentacja} jest moim {przyjacielem|wrogiem}.";
  4.  
  5. for ( $i = 0; $i < 10; $i++ )
  6. {
  7.    $newStr = preg_replace_callback('#{(.*?)}#um', 'replacer', $str);
  8.    echo( "$newStr <br />" );
  9. }
  10.  
  11. function replacer( $matches )
  12. {
  13.    $choices = explode('|', $matches[1] );
  14.    $choice = $choices[array_rand($choices)];
  15.    return $choice;
  16. }
  17. ?>
sirkus
mała przeróbka i jest dokładnie to o co mi chodziło, wielkie dzięki

  1. <?php
  2.  
  3. function replacer( $matches )
  4. {
  5.   $choices = explode('|', $matches[1] );
  6.   $choice = $choices[array_rand($choices)];
  7.   return $choice;
  8. }
  9. $str = "Egipt {jest|znajduje się} w Afryce. {Manual|Dokumentacja} jest moim {przyjacielem|wrogiem}.";
  10.  
  11. echo preg_replace_callback('#{(.*?)}#', 'replacer', $str);
  12.  
  13.  
  14. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.