Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne [link=www... => [link=http://w
rmn
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


Nie moge rozwiązać następującego problemu. Chce, żeby wszystkie ciagi znaków w postaci [link=jakis_adres] byly przerabiane na [link=http://jakis_adres] jesli 'jakis_adres' nie zawiera w sobie ciagu :// ?

Pomocy!
Go to the top of the page
+Quote Post
tts
post
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 14.02.2005

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


manual: str_replace" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
rmn
post
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


chyba za pomocą tej funkcji nie da sie tego zrobić?
Go to the top of the page
+Quote Post
strife
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Witam,

Jestem słaby w wyrażeniach regularnych, aby coś wymyślić muszę posiedzieć bardzo długo, sklepałem coś takiego na szybko, mam nadzieję że pomorze Ci to w pewien sposób.

  1. <?php
  2.  
  3.   $string = '[link=Przyklad]';
  4.   
  5.   $replace = preg_replace('#([.*?=)([wW]+)(])#is', '1http://23', $string);
  6.   
  7.   echo $replace;
  8.  
  9. ?>

Powinno działać.

Pozdrawiam!

Ten post edytował scarface 8.03.2005, 23:11:32
Go to the top of the page
+Quote Post
rmn
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


Dzięki za pomoc!

Problem w tym, że chodzi o to abym po wpisaniu:
[link=przyklad] dostawał [link=http://przyklad]
ale jesli user wpisze sam protokoł np. [link=ftp://przyklad] to parser ma to juz zostawic w spokoju.
Go to the top of the page
+Quote Post
tts
post
Post #6





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 14.02.2005

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


a moze taki szkic rozwiazania:

  1. <?php
  2.  
  3. $ciag = '[link=przyklad]';
  4. if( !eregi(&#092;"[link=http://+$\",$ciag) && !eregi(\"[link=ftp://+$\",$ciag) )
  5.    $ciag = str_replace(&#092;"[link=\",\"[link=http://\",$ciag);
  6.  
  7. ?>

mozesz w miejsce brzydkiego !eregi(.... i wymieniania protokolow zastosowac jakies rozgalezienie w wyrazeniach regularnych.

a swoja droga to dlaczego userowi nie wywalic komunikatu bledu zamiast zamieniac bo skad wiadomo czy chodzilo o http czy ftp?

Ten post edytował tts 9.03.2005, 00:25:23
Go to the top of the page
+Quote Post
bendi
post
Post #7





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

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


  1. <? preg_replace( '%[link=(http://|ftp://)?(.*?)]%ie', '\"[link=\".(strlen(\"$1\")?\"$1\":\"http://\").\"$2\".\"]\"', $sString ); ?>
Go to the top of the page
+Quote Post
rmn
post
Post #8





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


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


Nie możemy sie zrozumieć. Chodzi mi tylko o to aby zmienić te linki, ktore nie mają okreslonego protokłu. Pozostałe mają zostać nie zmienione. (opcja z wyliczaniem protokołów, ktore moga się pojawić mi nie odpowiada, bo jest mnóstwo niestandardowych 'protokołów' np. gg:// ed2:// itd itp

Więc potrzebuje wyrażenia, ktore dopsuje się do [link=www.onet.pl] ale nie dopasuje sie do [link=http://www.onet.pl] czy jakiegokolwiek z :// w parametrze. Niby proste a nie moge sobie poradzic.

Cytat
a swoja droga to dlaczego userowi nie wywalic komunikatu bledu zamiast zamieniac bo skad wiadomo czy chodzilo o http czy ftp?


Bo zwykły user zazwyczaj sam nie wie:)

Ok:) mam, może kiedyś się przyda albo znajdziecie błąd;)

  1. <?php
  2. preg_replace('#[link=(w+)([^:][^/][^/][w.]+)]#', '[link=http://$1$2]', $text);
  3. ?>


Ten post edytował rmn 9.03.2005, 11:12:05
Go to the top of the page
+Quote Post
bendi
post
Post #9





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

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


No teraz juz jest git (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  1. <?php
  2. echo preg_replace( '%[link=([a-z]+://)?(.*?)]%ie', '\"[link=\".(strlen(\"$1\")?\"$1\":\"http://\").\"$2]\"', $sString );
  3.  
  4. ?>
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: 21.10.2025 - 21:01