Page 1 of 1

Suche regex lover!

Posted: Fri Jan 31, 2014 3:17 pm
by Timbalu
Ich suche für CKEDITOR einen 8) regex lover, welcher eine wirklich universell verwendbare und super elegante regex aus der hohlen Hand zaubert, die:

Code: Select all

<div class="serendipity_imageComment_center" style="width: 500px">
<div class="serendipity_imageComment_img"><!-- s9ymdb:09 --><img alt="image alt text" class="serendipity_image_left" height="360" src="/uploads/example1.jpg" width="500" /></div>
<div class="serendipity_imageComment_txt">image1 comment example text</div>
</div>
und

Code: Select all

<div class="serendipity_imageComment_center" style="width: 82px">
<div class="serendipity_imageComment_img"><!-- s9ymdb:10 --><img alt="alt blah" class="serendipity_image_right" height="109" src="/_uploads/example2.serendipityThumb.jpg" width="82" /></div>
<div class="serendipity_imageComment_txt">example2 thumb comment blah</div>
</div>
und/oder

Code: Select all

<!-- s9ymdb:10 --><img alt="" class="serendipity_image_left" height="109" src="/uploads/example2.serendipityThumb.jpg" width="82" />
etc (DITO für serendipity_imageComment_right, serendipity_imageComment_left) abdeckt, also für alle denkbaren Optionen, die die Mediendatenbank für image inserts zulässt. Sie muss multiline \m und \s\S fähig, und eventuell \g greedy sein und einzelstehende Code 3 finden, ohne in 1 und 2 fündig zu werden.

Anyone? :)

Re: Suche regex lover!

Posted: Sat Feb 01, 2014 11:21 am
by garvinhicking
Hey,

oh ja, das finde ich auch immer was kompliziert. Hierfür muss man solche lookahead/lookbehind assertions (http://stackoverflow.com/questions/2973 ... mic-groups) einsetzen. Man müsste also diese <div> tags als lookahaead einbinden, und als lookbehind auch dafür sorgen dass kein <img> ausserhalb von den zugehörigen schließenden </div>s im ungreedy mode gematcht wird.

Ich versuche mir das nächste Woche mal genauer anzuschauen. Kannst Du noch sagen aus welchem Grund Du nur Code 3 matchen willst, was soll das später machen?

Grüße,
Garvin

Re: Suche regex lover!

Posted: Sat Feb 01, 2014 12:02 pm
by Timbalu
garvinhicking wrote:Kannst Du noch sagen aus welchem Grund Du nur Code 3 matchen willst, was soll das später machen?
Da hast du mich falsch verstanden. Code drei soll nur auch alleine für sich gefunden werden, auch wenn weitere matches für 1 oder 2 gefunden sind/werden. Ich will alle drei Möglichkeiten und dito für left und right, also alles bunt durcheinander in allen möglichen Kombinationen gematcht haben. Grund ist, dass CKEDITOR die Serendipity eigene Umbastelung von Image Widgets zerhaut. Dafür benötige ich eine protectedSource Rule.

Re: Suche regex lover!

Posted: Mon Feb 03, 2014 2:13 pm
by garvinhicking
Hi!

Reicht es dann nicht einfach nur nach:

Code: Select all

preg_match('@<!\-\- s9ymdb:[^>]+><img.*src="([^"]+)@imsU', $text, $matches);
zu suchen? Das würde alle img src attribute raussuchen von allen Fällen die es gibt.

Noch verstehe ich halt nicht, was Du matchen möchtest, bzw. was Du durch was ersetzen möchtest.

Re: Suche regex lover!

Posted: Mon Feb 03, 2014 2:32 pm
by Timbalu
:) Das wäre schön einfach, aber es geht darum, per javascript regex, den gesamten eingefügten image Teil der MediaLibrary, mit allen Bedingungen (und meine drei aufgezählten sind ja längst nicht alle, wenn ich noch popup etc dazu zähle) zu erfassen und innerhalb von CKEDITOR als protectedSource auszugeben, damit dieser die Finger davon lässt!

Re: Suche regex lover!

Posted: Tue Feb 04, 2014 11:09 am
by garvinhicking
Hi!

Code: Select all

@(<div class="serendipity_imageComment[^>]+>(<div class="serendipity_image[^>]+>.*</div>)*.*</div>|<!-- s9ymdb-->.*/>)@
Ungetestet. Die Idee ist: Schütze jeden HTML-Code, der entweder innerhalb eines serendipity_imagecomment* DIVs steht (und darin dürfte beliebig viele serendipity_image divs kommen), oder wo ein <!--s9ymdb-->(bild) vorkommt.

Grüße,
Garvin

Re: Suche regex lover!

Posted: Tue Feb 04, 2014 11:41 am
by Timbalu
Zack! Ich werde das testen, und melde mich, sobald wieder Luft ist! :)
Danke vorerst!

Re: Suche regex lover!

Posted: Sun Feb 09, 2014 6:51 pm
by Timbalu
Nachdem ich ein paar Stunden "Spaß" mit deiner Regex hatte..., bin ich endlich auf die ultimative Lösung gekommen, die auch noch extrem einfach war. :D Simplicity is beautiful!

Thanks anyway!