m-Modifizierer geht nicht?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • siegi44
    antwortet
    hallo,
    • s

      Der s-Modifier veranlasst den Parser dazu, die Zeichenkette, auf die der reguläre Ausdruck angewendet wird, in einzelne Zeilen zu unterteilen - das Pattern wird hierbei also nicht auf die ganze Zeichenkette bezogen, sondern jede Zeile einzeln behandelt
    • m

      Der m-Modifier ist das Komplement zum s-Modifier: Die Zeichenkette wird nicht in Zeilen aufgetrennt, sondern im Ganzen behandelt.
    ich hatte gemeint weil eben der m-Modifier die zeichenkette als ganzes behandelt ignoriert der die \n und so geht das pattern weiter über das zeilenende bis zum [/b] tag ...

    da hab ich mich wohl geirrt ...

    jetzt geht es nämlich!!! (durch s statt m)

    danke für eure hilfe!!

    mfg,
    siegi
    Zuletzt geändert von siegi44; 01.08.2006, 08:21.

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    ey, du bist genauso patenteigentümer.

    ps: wollte dir gerade eine mail schicken - ging nicht. wollte dir nur schreiben, dass es h31ss, äh heiss ist - kühlt aber langsam ab

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet
    Original geschrieben von siegi44
    [Bwürde ich gerne wissen, wie ich

    $text = preg_replace("!\[b\](.*?)\[/b\]!mi", "<b>$1</b>", $text);

    ändern muss damit der erwartete effekt kommt ??
    [/B]
    hier die 'offizielle' Antwort (Patenteigentümer ist 3DMax):

    $text = preg_replace("!\[b\](.*?)\[/b\]!si", "<b>$1</b>", $text);

    und 'inoffiziell' gibt es noch einige Spielarten davon.

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    Original geschrieben von gleiwitz19
    [B]Da du gefragt hast. In deiner Antwort wurde unnötigerweise
    (1)das ? durch das U ersetzt. Der Modifier U ist gleichwertig zum ?.
    (2) Die Reihenfolge der modifiers umgedreht. Die modifiers bleiben dadurch gleichwertig.
    ja, da muss ich dir "leider" recht geben (hab's direkt mal ausprobiert), aber jeder hat nun mal seine eigenen regex-vorlieben


    bleibt nur noch die frage offen, ob unsere lösung auch im sinne des ops ist.

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet
    Original geschrieben von 3DMax
    meinst du diesen teil: (.*?)
    dort ist das '?' wirklich überflüssig.
    und was meinst du mit "und den Rest belassen " - was habe ich noch geändert?

    achso, der modifier 'U' ist auch nicht ganz unwichtig, aber da kannst du ja bestimmt etwas schlaues zu pasten
    Da du gefragt hast. In deiner Antwort wurde unnötigerweise
    (1)das ? durch das U ersetzt. Der Modifier U ist gleichwertig zum ?.
    (2) Die Reihenfolge der modifiers umgedreht. Die modifiers bleiben dadurch gleichwertig.

    Bezüglich dieser Punkte war nichts falsch, und es war nicht die Thread-Frage. Ich tendiere dazu, Fragen schonend zu beantworten anstatt möglichst viel anders zu machen. Frager hatte nur einen modifier, einen einzigen Buchstaben falsch, und vermutlich verwechselt, oder schlecht instruiert bekommen, oder sowas. Zuzugeben, dass ich es nicht gewusst habe. Frager hatte das ungreedy und das i drin.

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    Original geschrieben von gleiwitz19
    Und sein ( : ? und den Rest belassen wie es war, es war nämlich richtig.
    meinst du diesen teil: (.*?)
    dort ist das '?' wirklich überflüssig.
    und was meinst du mit "und den Rest belassen " - was habe ich noch geändert?

    achso, der modifier 'U' ist auch nicht ganz unwichtig, aber da kannst du ja bestimmt etwas schlaues zu pasten
    Zuletzt geändert von 3DMax; 31.07.2006, 21:56.

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet
    Du hättest gescheiter das hier gepastet, es ist nämlich die Erklärung:

    s - If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines.

    Und sein ( : ? und den Rest belassen wie es war, es war nämlich richtig.

    Also war der Fehler, ein m anstatt ein s zu haben (ich wusste es nicht)

    Einen Kommentar schreiben:


  • 3DMax
    antwortet
    wenn du alles zwischen den b-tags matchen willst (inkl. zeilenumbruch), dann benutze das:
    Code:
    "!\[b\](.*)\[/b\]!isU"
    wozu soll der modifier m in deinem fall dazu gut sein?

    Einen Kommentar schreiben:


  • siegi44
    antwortet
    Code:
    [ b]asdf
    asdfs
    [ /b]
    anm. ich habe eine leerstelle in die tags gemacht damit man sie sieht!!
    wird nicht zu

    asdf
    asdfs


    deswegen habe ich den m-modifizierer eingebaut, aber da sich da nichts ändert würde ich gerne wissen, wie ich

    $text = preg_replace("!\[b\](.*?)\[/b\]!mi", "<b>$1</b>", $text);

    ändern muss damit der erwartete effekt kommt ??

    danke!
    Zuletzt geändert von siegi44; 31.07.2006, 19:06.

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet
    "funktioniert nicht" ist sowieso nichts rechtes. Im geposteten ist an sich kein Fehler, ausser dass ein unnützer m-modifier vorkommt.

    Einen Kommentar schreiben:


  • siegi44
    antwortet
    hallo,

    im tut steht nix darüber ...

    und mit '...' statt "..." ändert sich auch nix!

    wie soll ich denn jetzt ^ oder $ einbauen damit ich das gleiche ergebnis bekomme, ich blicke da nicht so durch ...

    danke!!!
    Zuletzt geändert von siegi44; 31.07.2006, 18:26.

    Einen Kommentar schreiben:


  • gleiwitz19
    antwortet
    If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect.

    Was steht wohl im Tutorial über den m-modifier??

    Ohne nachzuschauen, vielleicht muss der replace-string in '...' stehen, dies wegen dem $1.
    Zuletzt geändert von gleiwitz19; 31.07.2006, 18:10.

    Einen Kommentar schreiben:


  • siegi44
    hat ein Thema erstellt m-Modifizierer geht nicht?.

    m-Modifizierer geht nicht?

    Hallo,

    ich versuche gerade einen eigenen BBcode-parser zu basteln, hab mir das Regex-tut auf dieser seite angeguckt und nun stehe ich vor einem problem:

    in dieser zeile funktioniert der m-modifizierer nicht

    $text = preg_replace("!\[b\](.*?)\[/b\]!mi", "<b>$1</b>", $text);

    anm.: kann kein [code] verwenden weil sonst das [b\] durch <b> ersetzt wird!

    Könnt ihr mir bitte helfen, danke!!!!!

    mfg,
    siegi
Lädt...
X