Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Znów wyrażenia regularne
Spirit86
post
Post #1





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Wave
post
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

Ostrzeżenie: (0%)
-----


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

No bo, po co komplikować?
Go to the top of the page
+Quote Post
Spirit86
post
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


taa, gdyby to działało tj. trzeba (IMG:http://forum.php.pl/style_emoticons/default/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ń (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
hwao
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2.  
  3. $string = 'pytanie?
  4. odpowiedź';
  5.  
  6. echo str_replace( 'pytanie?'.&#092;"n\", '<b>pytanie?</b><br />'.\"n\", $string );
  7.  
  8. ?>
Go to the top of the page
+Quote Post
Spirit86
post
Post #5





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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

(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował Spirit86 28.03.2005, 18:17:23
Go to the top of the page
+Quote Post
keedy
post
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


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. ?>


?
Go to the top of the page
+Quote Post
Spirit86
post
Post #7





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


hehehe, dzięki za chęci (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
misiek_km
post
Post #8





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 25.01.2003

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Ociu
post
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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. ?>
Go to the top of the page
+Quote Post
Spirit86
post
Post #10





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@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. ?>
Go to the top of the page
+Quote Post
Ociu
post
Post #11





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




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. ?>


Ten post edytował Ociu 29.03.2005, 09:19:44
Go to the top of the page
+Quote Post
jono
post
Post #12





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
bendi
post
Post #13





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował bendi 29.03.2005, 09:45:46
Go to the top of the page
+Quote Post
Spirit86
post
Post #14





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@bendi: no to działa, spoko, thx
@jono: hehe, widze, ze masz takie same pomysły, jak ja (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , problem w tym, że jeżeli odpowiedź będzie składać się z kilku wierszy?
Go to the top of the page
+Quote Post
jono
post
Post #15





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale tak jest prościej heh.
Go to the top of the page
+Quote Post
Spirit86
post
Post #16





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


ty no php można też tworzyć w notatniku, tylko po co?(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
tiraeth
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Masz.... tylko spacje w pytaniu muszą być zastąpione kreską dolną _ (IMG:http://forum.php.pl/style_emoticons/default/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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) To jest naprowadzenie...
Go to the top of the page
+Quote Post
Spirit86
post
Post #18





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Tiraeth @ 2005-03-30 14:27:50)
Masz.... tylko spacje w pytaniu muszą być zastąpione kreską dolną _ (IMG:http://forum.php.pl/style_emoticons/default/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ć (IMG:http://forum.php.pl/style_emoticons/default/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 _ (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:06