Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] str_replace
Edpl
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

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


Witam, chcę w swoim kodzie zrobić coś na styl wikipedii aby łatwo było tworzyć linki, jak poprawnie napisać taki kod. Jedyne co dotychczas stworzyłem nie działa:
  1. <?php
  2. $text=str_replace('[[%|','<a href=index.php?page=search&key=%>',$text);
  3. $text=str_replace('|%]]','%</a>',$text);
  4. ?>


Z góry dziękuję i pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
kaapa
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.04.2007

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


Twój kod działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) sprawdzałem. Możesz jeszcze zrobić coś takiego
  1. <?php
  2. $text = "[[%| tekst |%]]";
  3.  
  4. $do = array('[[%|', '|%]]');
  5. $na = array('<a href=index.php?page=search&key=%>', '</a>');
  6.  
  7. $text =str_replace($do,$na,$text);
  8.  
  9. print("$text");
  10. ?>


Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Edpl
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

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


Nie wiem czy się zrozumieliśymy... link powinien wyglądać tak [[tekst|wyswietlany_tekst]]
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $text = "[[%| tekst |%]]";
  3.  
  4. $pattern = '/[[%| (.*?) |%]]/';
  5. $replace = '<a href="index.php?page=search&key=1">1</a>';
  6. $text =preg_replace($pattern,$replace,$text);
  7.  
  8. print($text);
  9. ?>

Dostosuj sobie link jak chcesz
Go to the top of the page
+Quote Post
kaapa
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.04.2007

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


Coś takiego ?
  1. <?php
  2. $text = "[[http://www.wp.pl| wp ]]";
  3.  
  4. $do = array('[[', '|', ']]');
  5. $na = array('<a href="', '">', '</a>');
  6.  
  7. $text =str_replace($do,$na,$text);
  8.  
  9. print("$text");
  10. ?>


;]
Go to the top of the page
+Quote Post
Edpl
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

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


Dziękuję, działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Mi chodziło bardziej o to:
  1. <?php
  2. $text = "[[tekst|tekstowy]]";
  3. $pattern = '/[[(.*?)|(.*?)]]/';
  4. $replace = '<a href="index.php?page=search&key=1">2</a>';
  5. $text =preg_replace($pattern,$replace,$text);
  6. print($text);
  7. ?>

a z tym \1 i \2 to prawie tak samo jak w skryptach bashowych.... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Hmm pomyliłem z SQL i jako dowolny ciąg znaków wstawiłem % i stąd całe nieporozumienie.
I mam tylko jedno pytanie dlaczego (.*?) ?
Korzystając z tego:
# . - dopasowanie do każdego znaku oprócz nowego wiersza
# | - start alternatywnych rozgałęzień (jak OR)
# ( - początek ciagu
# ) - koniec ciągu
# * - powtórzenie zero lub wiecej razy
?
bo jedyne co by mi nie pasowało to znak zapytania, ale nie wiem, czy dobrze kombinuję.


@kaapa:
Twój sposób może też dobry i prostszy, ale czy przypadkiem jeśli w filtrowanym tekście pojawie się np "luźny" znak | to czy go nie zamieni?

Ten post edytował Edpl 13.04.2007, 21:25:13
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




powinienes miec tak:
  1. <?php
  2. $text = "[[tekst|tekstowy]]";
  3. $pattern = '/[[(.*?)|(.*?)]]/';
  4. $replace = '<a href="index.php?page=search&key=1">2</a>';
  5. $text =preg_replace($pattern,$replace,$text);
  6. print($text);
  7. ?>


A .*? to dowolny znak wiele lub zero razy. z jakiegos powodu .* nie dziala (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Edpl
post
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

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


Tak mam, źle wkleiłem (nie wiem jakim cudem ale nvm (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )
Dzięki za pomoc i wyjaśnienie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kaapa
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 13.04.2007

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


Tak dokładnie, zakładając, że w środku będzie zamieniany znak zrobi się bałagan trochę. Skrypt używający wyrażeń regularnych był lepszy.
Pozdrawiam.
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: 23.08.2025 - 12:29