2012-05-29 8 views
0

나는 HTML로 작성한 작은 마크 업 언어를 사용하기 위해 루비 스크립트를 작성하려고하지만 링크를 구문 분석하는 방법을 알 수 없다. 기본적으로 BBCode의 축소 버전입니다. 예를 들어, 누군가 [i]{text}[/i]을 입력하면 [i]{text}[/i].gsub('[i]','<i>').gsub('[/i]','</i>'을 사용합니다. 링크를 구문 분석하는 방법을 알아낼 수는 없습니다. [url=website.com]site[/url]<a href="website.com">site</a>으로 변경하려면 어떻게해야하나요? 몇 가지 태그가 다르기 때문에 premade BBCode 파서를 사용하지 않으며 사람들이 [img][/img]과 같은 일부 태그를 사용하기를 원하지 않습니다.Ruby에서 문자열 주위의 문자를 대체하는 방법은 무엇입니까?

+2

[BB-루비를 사용하여 주위에 당신의 머리를 정리하려는 경우 ] (http://bb-ruby.rubyforge.org/)는 특정 태그 만 사용하도록 지정할 수있는 것 같습니다. 사용하지 않는 이유는 무엇입니까? –

+0

@AndrewMarshall 나는 그것을 몰랐다. 대신 그걸 사용하겠습니다. – Orcris

답변

0

매우 순진 :

s.gsub(/\[url=(.*?)\](.*?)\[\/url\]/) { "<a href='#{$1}'>#{$2}</a>" } 

HTML 주입이 매우 쉬울 것이다. here (적절한 파서 작성) 지점은 여전히 ​​수행중인 작업에 적용됩니다.

0

나는 정규 표현식을 사용하여 KCH에 동의하지만, 당신은 GSUB() 당신이 해왔 같은 ...

s = "[url=website.com]site[/url]" 
s2 = s.gsub('[url=','<a href="').gsub('[/url]','</a>').gsub(']','">')