Pagina 1 din 1

regular expression [rezolvat]

Scris: Dum Ian 18, 2009 7:03 pm
de vectorialpx
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

Scris: Dum Ian 18, 2009 7:06 pm
de Pirahna
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.

Scris: Dum Ian 18, 2009 7:09 pm
de vectorialpx
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!

Scris: Dum Ian 18, 2009 7:54 pm
de vectorialpx
...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?

Scris: Dum Ian 18, 2009 11:47 pm
de MihaiC

Scris: Lun Ian 19, 2009 9:27 am
de Quber

Scris: Lun Ian 19, 2009 2:58 pm
de Amenthes

Scris: Mie Ian 21, 2009 9:27 am
de vectorialpx
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
:)