regular expression [rezolvat]

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

regular expression [rezolvat]

Mesajde vectorialpx » Dum Ian 18, 2009 7:03 pm

am de la aurelian [de mult timp] un reg-exp cu care sa transform un text in link in cazul in care arata ca un link.

adica, www.gigi.com devine <a href="http://www.gigi.com">www.gigi.com</a>

acum, ce nu stiu eu este cum sa fac in cazul in care link-ul e la final-ul unui paragraf. Adica, daca am www.gigi.com</p> atunci tag-ul se include in A... ceea ce nu e deloc bine

// eu am asa:
$str = preg_replace('/www\.(.*)\.(.*) /','<a href="http://www.\\1.\\2" target=\'_blank\'>www.\\1.\\2</a>',$str);

ceea ce e OK cand dupa link urmeaza spatiu... dar daca se pune P-ul la final, nu mai e OK. Ia sa testam la :) www.phpromania.net
Ultima oară modificat Mie Ian 21, 2009 9:31 am de către vectorialpx, modificat 1 dată în total.



Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Dum Ian 18, 2009 7:06 pm

scoti si tu din expresie tot ce se afla intre < si >

sau faci un replace la </p></a> in </a></p>
asta daca am inteles eu bine.
|

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Dum Ian 18, 2009 7:09 pm

cred ca ar fi o solutie mai simpla... o sa ma uit intai la phpbb, sa fur din functiile lui... ca poate are, daca nu... m-am gandit si eu la asta dar... e destul de nasol ca nu stiu daca urmeaza </p> sau <br /> sau </span> sau ... tre sa fie tot reg-exp

offf... phpBB leaga 3 functii si 4-5 constante pentru un rahat de genul asta..
Ah, ce nervi am!

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Dum Ian 18, 2009 7:54 pm

...repostez ca sa actualizez thread-ul

bun, am gasit [era in manual!!]
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $text);
dar e DOAR pentru link-uri cu [protocol]://asdasd.com

eu vreau sa fie si pentru link-uri cu www si pentru d-alea cu protocol

adica $text = ereg_replace("www.[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\">\\0</a>", $text); e pentru link-uri DOAR cu www

are cineva idei ce trebuie sa modific din link-ul de mai sus?

Avatar utilizator
MihaiC
Senior Member
Mesaje: 1644
Membru din: Dum Mai 14, 2006 8:07 pm

Mesajde MihaiC » Dum Ian 18, 2009 11:47 pm

Dev @

Avatar utilizator
Quber
Senior Member
Mesaje: 874
Membru din: Mar Iun 27, 2006 8:33 pm
Localitate: localhost
Contact:

Mesajde Quber » Lun Ian 19, 2009 9:27 am

A man who dares to waste one hour of time has not discovered the value of life.

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Lun Ian 19, 2009 2:58 pm

I'm under construction |

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Mie Ian 21, 2009 9:27 am

mda... am gasit. De fapt, era o problema din formular si, am gasit so o chestie mai frumoasa decat imi trebuia

[php]
<?php
$url = stripslashes('www.domain.com');
$regex='/\b(';
$regex.='(https?:\/\/)?'; #Scheme - am adaugat eu ultimul "?"
$regex.='(([0-9a-z-]+\.)+'; #Domain
$regex.='([a-z]{2,3}|aero|coop|jobs|mobi|museum|name|travel))'; #TLD
// $regex.='(:[0-9]{1,5})?'; #Port
// $regex.='(\/[^ ]*)?'; #Query
$regex.=')\b/i';
if(preg_match($regex, $url, $matches)){
$domain = $matches[2];
if(!gethostbynamel($domain)) {
echo 'This site is not on-line.'; die('');
}
} else { echo 'This site\'s format is invalid. Wait...'; die(''); }
[/php]

multam pentru timp!

edit .. am uitat sa specific sursa
http://code.mavrickdesign.com.au/php/ur ... _match.htm
:)


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 24 vizitatori