RegEx'in ile Yardım

1 Cevap php

Benim RegEx'in ile ilgili bir sorun var. Ben böyle bir BBCode Linki çevirmek istiyorum

[Link = www.stackoverflow.com] Yığın taşması [/ link]

gibi bir HTML link içine

<a href='www.stackoverflow.com'>Stack-Overflow</a>.

In my String it's possibile to make more than one link in BBCode. I Also need a function to translate the html back to BBCode.

My functions are BBCode To HTML:

$Text = preg_replace('/\[link=([^ ]+).*\](.*)\[\/link\]/', '<a href="$1">$2</a>', $Text);  

BBCode için HTML:

$Text = preg_replace('/\<a href="([^ ]+).*\">(.*)\<\/a\>/Usi', '[link=$1]$2[/link]', $Text); 

Benim Problem thees fonksiyonları i birden fazla bağlantı varsa, bu işe yaramazsa, ve ben HTML çevrilmiş bir bağlantı var ve ben geri çevirmek istediğinizde, ben bağlantı sadece ilk karakteri olması.

Can everyone help me? thanks in advance

1 Cevap

İlk soruna gelince, * açgözlü olduğunu, bu nedenle ilk ve son bağlantıları arasındaki her şeyi yakalar. Basit bir çözüm olmayan açgözlü ön eleme kullanmak için, ya da [] sizin gruplarda izin vermemektir:

\[link=([^ \[\]]+)\]([^\[\]]*)\[\/link\]

Benzer şekilde, başka bir yol için:

<a href="([^ "]+)">([^<]*?)\<\/a\>

Burada olmayan açgözlü versiyonu. Bu [] bağlantıları sağlar ve hatta kısadır:

\[link=([^ ]*?)\](.*?)\[\/link\]