Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znów wyrażenia regularne
Forum PHP.pl > Forum > PHP
Spirit86
Witam, chcę zrobić, skrypt, który automatycznie zamieni coś takeigo
Kod
pytanie?
odpowiedź

na
Kod
<b>pytanie?</b><br />
         odpowiedź


w związku z czym napisałem coś takeigo:

  1. <?
  2. $ret = 'to jest pytanie?
  3. a to odpowiedź
  4. nowe pytanie?';
  5. //$ret = preg_replace('[a-z][A-Z]?.$', \"pytanie\", $ret);
  6. $ret = preg_replace(&#092;"#(.*?)(.*?)?rn#si\", \"<span class=\"focus\"><u><b>2:</b></u></span><br />&nbsp;&nbsp;&nbsp;&nbsp;3\", $ret);
  7. echo $ret;
  8. ?>

Jednakże kod ten działa poprawnie tylko przy pierwszym pytaniu. Ma ktoś jakieś pomysły?
Wave
  1. <?php
  2. preg_replace(&#092;"#pytanie?#i\", \"<b>0</b><br />\", $ret);
  3. ?>

No bo, po co komplikować?
Spirit86
taa, gdyby to działało tj. trzeba tongue.gif

tak wygląda rezultat:
Kod
to jest [B]pytanie[/B]
? a to odpowied nowe [B]pytanie[/B]
?



nawet, gdy zastąpie to przez np.

  1. <?php
  2. $ret = preg_replace(&#092;"#(.*?) ?rn#i\", \"<b>0</b><br />\", $ret);
  3. ?>


jak ja ni lubię tych wyrażeń tongue.gif
hwao
  1. <?php
  2.  
  3. $string = 'pytanie?
  4. odpowiedź';
  5.  
  6. echo str_replace( 'pytanie?'.&#092;"n\", '<b>pytanie?</b><br />'.\"n\", $string );
  7.  
  8. // questionmark.gif
  9. ?>
Spirit86
ej no nie możecie wpaść na to, że pytanie? jest zmienne, zamiast tego może być

Kod
czemu masz szope na głowie?
a bo tak

tongue.gif tongue.gif
keedy
moze sie nie znam ale czy nei da sie tego zrobic w smarty(albo innym systemem szablonów) ?

theme.tpl:
<b>{$pytanie}</b><br />
{$odpowiedz}
##END##

index.php
  1. <?php
  2.  
  3. ...
  4. $tpl->assign( 'pytanie', $pytanie );
  5. $tpl->assign( 'odpowiedz' $odpowiedz );
  6. ...
  7.  
  8. ?>


?
Spirit86
hehehe, dzięki za chęci smile.gif
misiek_km
może tak
  1. <?php
  2. $ret = preg_replace(&#092;"#(.*?)(rn|n|r)(.*?)#si\", '<u><b>1:</b></u><br />&nbsp;&nbsp;&nbsp;&nbsp;2', $ret);
  3. ?>
Ociu
Zmienne ?
  1. <?php
  2. $string = 'Ala ma kota ?';
  3. $odp = 'Kod ma AIDS';
  4. $string = str_replace($string.&#092;"n\", '<b>'.$string.'</b><br />'.\"n\", $string );
  5. echo $string.$odp;
  6. ?>
Spirit86
@misiek_km: niestety nie działa....
omg zmienne, czyli np.
  1. <? $rep = join(file('artykuł.roz'));
  2. $ret = preg_replace(&#092;"Odpowiednie WYRAŻENIE REGULARNE\", '<u><b>1:</b></u><br />&nbsp;&nbsp;&nbsp;&nbsp;2', $ret);
  3. echo $ret;
  4. ?>
Ociu
Wiem o co chodzi..
Ale nie rozumiem, ty masz pytanie i odpowiedź w jednej zmiennej ? Jeśli tak, to sobie rpzedziel to jakoś (np. ||)
i daj:
  1. <?php
  2. $string = explode(&#092;"||\", $string);
  3. $exp = str_replace(...);
  4. print '...';
  5. ?>
jono
  1. <?php
  2.  
  3. $dane = 'pytanie?
  4. odpowiedź';
  5. $dziel = explode(&#092;"rn\", $dane);
  6.  
  7. while($id < count($dziel)){
  8. echo '<b>'.$dziel[$id].'</b><br>'.$dziel[++$id];
  9. ++$id;
  10. }
  11.  
  12. ?>


powinno działać smile.gif
bendi
Sproboj tego:
  1. <?
  2. $ret = 'to jest pytanie?
  3. a to odpowiedź
  4. nowe pytanie?
  5. A to odpowiedz';
  6. $ret = preg_replace(
  7.     '#([[:alnum:][:punct:] ]+)?[rn]{1,2}#',
  8.     '<span class=\"focus\"><u><b>1:</b></u></span><br />&nbsp;&nbsp;&nbsp;&nbsp;',
  9.     $ret
  10. );
  11. echo nl2br( $ret );
  12. ?>
Spirit86
@bendi: no to działa, spoko, thx
@jono: hehe, widze, ze masz takie same pomysły, jak ja winksmiley.jpg, problem w tym, że jeżeli odpowiedź będzie składać się z kilku wierszy?
jono
no to sprawdzaj czy linia zawiera '?'
  1. <?php
  2.  
  3.  
  4.  
  5. $dane = 'pytanie?
  6. odpowiedź
  7. odpowiedź2
  8. pytanie?
  9. ooodp.';
  10.  
  11. $dziel = explode(&#092;"rn\", $dane);
  12.  
  13.  
  14. $id = 0;
  15. while($id < count($dziel)){
  16.  
  17. if(ereg('?', $dziel[$id])){
  18. echo '<br><b>'.$dziel[$id].'</b><br>';
  19. }
  20. else{ 
  21. echo $dziel[$id];
  22. }
  23. ++$id;
  24.  
  25. }
  26.  
  27.  
  28. ?>


Oczywiście... co kiedy odpowiedź zawiera znak zapytania smile.gif Ale tak jest prościej heh.
Spirit86
ty no php można też tworzyć w notatniku, tylko po co?tongue.gif
tiraeth
Masz.... tylko spacje w pytaniu muszą być zastąpione kreską dolną _ smile.gif
  1. <?
  2. $text = &#092;"Czy_ja_jestem_jakiś_dziwny??n\"; # dajemy na koncu znak nowej linii
  3. $text.= 'Tak, jesteś dziffny!!';
  4.  
  5. $text = preg_replace('#([w]{0,}?+)#', '<b>0</b>', $text);
  6. $text = str_replace(&#092;"n\", \"<br />\", $text);
  7. $text = str_replace(&#092;"_\", \" \", $text);
  8.  
  9. echo $text;
  10.  
  11.  
  12. ?>


Działa tylko na jeżeli pytanie jest na początku tekstu, ale pamiętaj, że to ty jesteś od napisania skryptu... my możemy cię naprowadzić smile.gif To jest naprowadzenie...
Spirit86
Cytat(Tiraeth @ 2005-03-30 14:27:50)
Masz.... tylko spacje w pytaniu muszą być zastąpione kreską dolną _ smile.gif
  1. <?
  2. $text = &#092;"Czy_ja_jestem_jakiś_dziwny??n\"; # dajemy na koncu znak nowej linii
  3. $text.= 'Tak, jesteś dziffny!!';
  4.  
  5. $text = preg_replace('#([w]{0,}?+)#', '<b>0</b>', $text);
  6. $text = str_replace(&#092;"n\", \"<br />\", $text);
  7. $text = str_replace(&#092;"_\", \" \", $text);
  8.  
  9. echo $text;
  10.  
  11.  
  12. ?>


Działa tylko na jeżeli pytanie jest na początku tekstu, ale pamiętaj, że to ty jesteś od napisania skryptu... my możemy cię naprowadzić smile.gif To jest naprowadzenie...

no ja wiem, tylko po chodzi o to, że jono pokazuje sposób, który ma 28 linijek, a jak juz wcześniej napisałem wyrażenie bendi-ego działa poprawnie, więc po co pisać 27 zbędnych linijek.
BTW to po co ja mam zastępować spacje na _ questionmark.gifexclamation.gif
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.