ugrás a tartalomhoz

Reguláris kifejezés

w3net · 2011. Feb. 14. (H), 18.58
JavaScript-ben írtam ezt a működő PCRE kifejezést.

// JS code
var aMatches = sInput.match(/\[(code|em)\](.|\n|\r)*?(\[\/\1\])/ig);
PHP-ben valahogy máshogy kellene. Nem nagyon akar működni.
Valaki átírná nekem PHP-re? Eddig jutottam. a g kapcsolót nem ismerte, ezért kihagytam. Olyan lefagyás féle lett belőle. Egyébként a reguláris kifejezéssel egy karakterláncbban ki akarom keresni az összes [em]..[/em] és .. sztringet.

preg_match_all("/\[(code|em)\](.|\n|\r)*?(\[\/\1\])/i", $sInput, $matches);
Előre is köszi. Remélem valaki felvilágosít, hogy mi a baj ill. mik a különbözőségeg JS és PHP regexp között. Elméletileg midegyik Perl compatibilis, akkor hol a gubanc? Elöre is köszönöm.
 
1

A JavaScript-nek saját

Poetro · 2011. Feb. 14. (H), 20.04
A JavaScript-nek saját szabályai vannak reguláris kifejezésekre, amik nem egyeznek a PCRE-vel (Perl Compatible Regular Expression), mivel több módosító valamint jó pár egyéb elem nem létezik, ami PCRE-ben igen.
<?php
header('Content-type: text/plain; charset=utf-8');

$sInput = "before [em]ems\ncontentsome code[/em] after";
if (preg_match_all('/\[(code|em)\](.*?)\[\/\1\]/si', $sInput, $matches)) {
  print_r($matches);
}
Kimenet:
Array
(
    [0] => Array
        (
            [0] => [em]em
contentsome code[/em]
        )

    [1] => Array
        (
            [0] => em
        )

    [2] => Array
        (
            [0] => em
contentsome code
        )

)
2

RegexBuddy

joed · 2011. Feb. 19. (Szo), 13.10
Hello!

Röviden: http://www.regexbuddy.com/

Reguláris kifejezés buildelő progi. Ami ugye nem nagy durranás, de van egy funkciója, ami az adott nyelven (PHP, JavaScript, C#, Java, Perl meg még pár tucat másikat is ismer) generál neked egy kódrészletet.

Remélem, segít.
3

Megéri?

Poetro · 2011. Feb. 19. (Szo), 15.10
És tényleg megéri a 30 EUR-t? Mert az nem kevés pénz egy viszonlag egyszerű eszközért, amiben reguláris kifejezéseket tudok írni.