Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyrażenia regularne
Lwik
post 18.10.2012, 19:05:26
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Witam, siedzę nad tym od 5 min i już totalnie nie mam pomysłu jak to rozwiązać, mianowicie
  1. <?PHP
  2. $string1 = "@Ty"; // Mam 3 stringi, każdy tekst z @ chcę sparsować na link w tym przykładzie będzie to <a href="http://localhost/Ty">@Ty</a>
  3. $string2 = "@";
  4. $string3 = "test @Ty test ";
  5. function change($tekst)
  6. {
  7. $tekst = preg_replace('/\@(.*?)\ /','<a href="http://localhost/\\1">@\\1 </a>',$tekst); // W tym przypadku działa to tak, że string numer 1 jest niewykrywany (brak spacji po zakończeniu)
  8. return $tekst;
  9. }
  10. echo change($string1); //@Ty
  11. echo change($string2); //@ - jest ok
  12. echo change($string3); //<a href="http://localhost/Ty">@Ty </a> - czyli jest ok


Ten post edytował Lwik 18.10.2012, 19:06:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
jaslanin
post 18.10.2012, 19:25:01
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


po testuj jeszcze ale ja tak to widzę:

  1. <?php
  2. $string1 = "@Ty"; // Mam 3 stringi, każdy tekst z @ chcę sparsować na link w tym przykładzie będzie to <a href="http://localhost/Ty">@Ty</a>
  3. $string2 = "@";
  4. $string3 = "test @Ty test ";
  5. function change($tekst)
  6. {
  7. $tekst = preg_replace('/(\@.+ ?)/','<a href="http://localhost/$1">$1</a>',$tekst); // W tym przypadku działa to tak, że string numer 1 jest niewykrywany (brak spacji po zakończeniu)
  8. return $tekst;
  9. }
  10. echo change($string1).PHP_EOL; //@Ty
  11. echo change($string2).PHP_EOL; //@ - jest ok
  12. echo change($string3).PHP_EOL; //<a href="http://localhost/Ty">@Ty </a> - czyli jest ok


+++ małą poprawkę wprowadziłem

Ten post edytował jaslanin 18.10.2012, 19:27:09


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
Lwik
post 18.10.2012, 19:29:02
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


? robi mi z całego stringa link.
W przypadku 3 wygląda to tak: <a href="http://localhost/@Ty test ">@Ty test </a>.
Po poprawce identycznie.

Ten post edytował Lwik 18.10.2012, 19:32:13
Go to the top of the page
+Quote Post
jaslanin
post 18.10.2012, 19:31:27
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


  1. <?php
  2. $string1 = "@Ty"; // Mam 3 stringi, każdy tekst z @ chcę sparsować na link w tym przykładzie będzie to <a href="http://localhost/Ty">@Ty</a>
  3. $string2 = "@";
  4. $string3 = "test @Ty test ";
  5. function change($tekst)
  6. {
  7. $tekst = preg_replace('/\@([^ ]+)/','<a href="http://localhost/$1">@$1</a>',$tekst); // W tym przypadku działa to tak, że string numer 1 jest niewykrywany (brak spacji po zakończeniu)
  8. return $tekst;
  9. }
  10. echo change($string1).PHP_EOL; //@Ty
  11. echo change($string2).PHP_EOL; //@ - jest ok
  12. echo change($string3).PHP_EOL; //<a href="http://localhost/Ty">@Ty </a> - czyli jest ok



++++ teraz powinno być lepiej

Ten post edytował jaslanin 18.10.2012, 19:34:18


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
Lwik
post 18.10.2012, 19:34:02
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 8
Dołączył: 11.05.2012

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


Teoretycznie jest ok, jednak odnośnik wygląda tak:
<a href="http://localhost/@Ty">@Ty</a>
Średnio mam zamiar wrzucać jeszcze jedno regularne by poprawić href. Jakieś pomysły?
Go to the top of the page
+Quote Post
jaslanin
post 18.10.2012, 19:35:10
Post #6





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


poprawiłem wyżej


--------------------
Good luck and happy PHP'ing
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: 14.08.2025 - 09:55