Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Znów wyrażenia regularne
Spirit86
post 28.03.2005, 11:29:48
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?


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Wave
post 28.03.2005, 17:51:54
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 28.03.2005, 18:01:40
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 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


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
hwao
post 28.03.2005, 18:13:57
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. // questionmark.gif
  9. ?>
Go to the top of the page
+Quote Post
Spirit86
post 28.03.2005, 18:17:13
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

tongue.gif tongue.gif

Ten post edytował Spirit86 28.03.2005, 18:17:23


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
keedy
post 28.03.2005, 19:48:27
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 28.03.2005, 21:05:10
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 smile.gif


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
misiek_km
post 29.03.2005, 02:09:30
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. ?>


--------------------
-=[ misiek ]=-
Go to the top of the page
+Quote Post
Ociu
post 29.03.2005, 07:50:07
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 29.03.2005, 09:01:12
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. ?>


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Ociu
post 29.03.2005, 09:19:05
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 29.03.2005, 09:43:00
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ć smile.gif


--------------------
if(function_exists("zrozum_kobiete")){
echo "Niemożliwe!"; exit;}
Go to the top of the page
+Quote Post
bendi
post 29.03.2005, 09:45:23
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 29.03.2005, 10:52:37
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 winksmiley.jpg, problem w tym, że jeżeli odpowiedź będzie składać się z kilku wierszy?


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
jono
post 29.03.2005, 20:05:15
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 smile.gif Ale tak jest prościej heh.


--------------------
if(function_exists("zrozum_kobiete")){
echo "Niemożliwe!"; exit;}
Go to the top of the page
+Quote Post
Spirit86
post 30.03.2005, 14:24:56
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?tongue.gif


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
tiraeth
post 30.03.2005, 15:27:50
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ą _ 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...
Go to the top of the page
+Quote Post
Spirit86
post 30.03.2005, 19:07:13
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ą _ 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


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 05:39