0

私は小さなブログモジュールを書いています。ユーザーが BBCode を入力できるようにしたい。それを XHTML に変換して DB に保存する必要があります[url]

私が許可したい2つのケースがあります:

[url=http://stackoverflow.com/]

に変換する必要があります

<a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>

[url=http://stackoverflow.com/]StackOverflow[/url]

に変換する必要があります

<a href="http://www.stackoverflow.com" title="StackOverflow">StackOverflow</a>

悲しいことに、私はそれを行うことができませんでした。結果はひどいもので、これを 1 つの正規表現で実行できるのか、それとも 2 つに分割する必要があるのか​​疑問に思っています。

4

3 に答える 3

2

これはうまくいくはずです:

\[url\s*=\s*([^\]]*)]\s*((?:(?!\s*\[/url\]).)*)\s*\[/url\]|\[url\s*=\s*([^\]]*)]

交換パターン:

<a href="$1$3" title="$2">$2$3</a>

この入力でテスト:

bla [url=http://stackoverflow.com/]StackOverflow[/url] bla
bla [url=http://stackoverflow.com/] bla

戻り値:

bla <a href="http://stackoverflow.com/" title="StackOverflow">StackOverflow</a> bla
bla <a href="http://stackoverflow.com/" title="">http://stackoverflow.com/</a> bla

無効な XML 文字 ("、<、> など) はタグの内容を「壊す」可能性があるため、いずれの場合でも、検証/エスケープを追加する必要がある場合があることに注意してください。

于 2009-10-27T19:02:10.887 に答える
2

この恐ろしい作品のようなものはそれを行うべきです:

\[url=([^\]]+)\](?:([^\[]+)\[\/url\])?

一致すると、URL が $1 に配置され、指定されている場合はテキストが $2 に配置されます。これはまだテストしていないので、微調整が必​​要になる可能性があります。

于 2009-10-27T18:48:18.993 に答える
0

関数BBCode2HTML($ text)を分析します

https://code.google.com/p/pwision/source/browse/trunk/inc/BBCode.inc#150

BBCode 2 HTMLを変換するアルゴリズムは次のとおりです:1)ここでBBCodeテキストコードを規制します: https ://code.google.com/p/pwision/source/browse/trunk/inc/BBCode.inc#60

2)ここで規制されたBBCodeをXMLコードに変換します: https ://code.google.com/p/pwision/source/browse/trunk/inc/BBCode.inc#101

3)XMLテキストへのXSLT変換を実行します。XSLTファイルはここにあり ますhttps://code.google.com/p/pwision/source/browse/trunk/inc/BBCodeXML2HTML.xslt 変換はここにあります: https ://code.google.com/p/pwision/ source / browser / trunk / inc / BBCode.inc#113

私が助けてくれたことを願っています!

PS:ここで見つけることができる優れたXSLTチュートリアル: http ://www.w3schools.com/xsl/xsl_languages.asp

于 2013-01-11T08:52:14.573 に答える