Beiträge von crAzywuLf

    Dateigröße ~ 6MB

    Weil ich faul bin und weil ich mich für Regex interessiere und ich glaube, dass es möglich ist, das ganze auch in einem Regex zu lösen, wieso soll ich dann zwei abfeuern?! Ich will mich schließlich auch weiterbilden und meine Fähigkeiten in regexen verbessern^^
    So seh ich das zumindest...

    Zitat


    Wie ist den deine Lösung?


    Meine Lösung umgeht das Problem, schlecht zu erklären, da sich das ganze in einem CMS abspielt.

    naja^^ dann könnte ich auch meine oder Pion's Lösung nehmen. Wollte das wie gesagt in einem Regex per preg_replace lösen, vll frag ich mal in einem Regex Forum nach. Nur wer sich bei Regexen mit heftigen Sachen beschäftigt wird auch zum Regexperten^^ ;)

    Ich poste die Lösung, wenn ich eine gefunden habe.
    Trotzdem danke für eure Mühe.

    also mit dieser Lösung

    PHP
    $pattern = '/(?=<ul>)[\w|\W]+<li>/';

    ist es egal, was für Zeichen dazwischen stehen, egal ob Leerzeichen oder nicht. Und so findest du raus, ob ein <ul> davor steht, oder nicht.
    Bei der Lösung mit dem negativen Lookbehind sind die Leerzeichen das Problem, wie du schon sagst, da verstehe ich auch nicht ganz wieso das nicht klappt.
    Aber kannst du dass denn dann nicht mit der Lösung oben machen, die Antwort obs vorsteht oder nicht, bekommst du ja so... =)

    ja ich hab heut schon ein wenig mit deiner Lösung rumgespielt aber ich komme es einfach nicht verneint^^ :rolleyes:

    :rolleyes::rolleyes::rolleyes::rolleyes:
    Unter Umständen wollte ich auch einfach seine Frage beantworten.... =/

    Danke.
    Also ich bin jetzt schon ein Stückchen weiter. Das Problem an dem ganzen Regex ist die optionale Anzahl von Leerzeichen oder Zeilenumbrüchen zwischen dem <ul> und dem <li>.

    Schau mal hier:
    http://www.regex-tester.de/uc_935_de.html

    Der Regex funktioniert wenn alle Listen ohne Leerzeichen aneinander geklatscht sind.
    Wenn man aber jetzt probiert Leerzeichen dazwischen zu erlauben, läuft es nicht mehr:

    Zitat


    (?<!<ul>|<\/li>)\s*((<li>[^<|>]*<\/li>)+)

    Ich hab auch schon \W ausprobiert läuft auch nicht :(
    (Die Leerzeichen zwischen den <li>'s wollte ich erstmal außenvor lassen...)

    Falls da noch wem was einfällt... kann er ja hier posten

    Die 0 fehlte...

    Code
    ^[0-9]+\.{0,1}[0-9]*$

    Der Regex ist aber schwachsinn, weil bei diesem Zahlen wie 19. durchkämen und wer will sowas schon.
    Du solltest wirklich Funktionen dafür benutzen.

    Ich würde nur Abi machen, wenn ich mir meinen Traumberuf damit erreichen könnte, wenn dir dein jetziges Studium Spaß macht ist das überflüssig.

    Wenn dir die Studienzeit entsprechend angerechnet wird ist das wechseln eigentlich ja kein Thema, wenn aber zuviel Zeit dabei flöten geht, würde ich persöhnlich erstmal das jetzige Studium fertig machen.

    türkische schulen in deutschland...? wenn ich ein anderes land ziehe um da mein leben zu verbringen oder eine familie zu gründen, dann ist mir doch klar, dass ich die sprache die dort gesprochen wird lernen muss. ausnahmsweise bin ich da mal voll merkels meinung. und das hat meiner meinung auch nichts mit faschischmus zutun.

    Okay, gib mir mal dein Document, den das man da nur mit nen Regex weiter kommt glaub ich nicht

    Aber da kann ich dir auch nicht helfen wenn du das sturr mit regex machen willst

    Es geht nicht um die Lösung selbst, sondern um eine Lösung mit Regex.


    Sicher gibts den:

    PHP
    (?<!<ul>)[\w]*<li><\/li>

    Er sucht also nach irgenwelchen Zeichen und dem <li></li> Elemten (in diesem Fall leer, setzte also noch beliebige Zeichen dazwischen, oder mache das </li> Elemt weg), findet diese aber nur, wenn kein <ul> davor steht!

    Edit:
    Also das ist ja deinem da oben sehr ähnlich, das hier funktioniert aber, denn du suchst oben über \W nach "nicht-wort-Zeichen", und nicht nach "wort-Zeichen".


    Wieso kann man das nicht einfach nutzen, wenns einfacher ist?
    Oder wenigstens dann, wenn gesagt wird, dass es keine andere Lösung gibt!?
    =)

    Code
    Lorem Ipsum Lorem Ipsum Lorem Ipsum
    <ul>
        <li>Lorem Ipsum</li>
        <li>Lorem Ipsum</li>
        <li>Lorem Ipsum</li>
    
    Lorem Ipsum Lorem Ipsum Lorem Ipsum

    mit dem Regex:

    Code
    (?<!<ul>)[w]*<li>

    klappt nicht, theoretisch müsste das erste <li> ja nicht gematched werden... right?

    Hi Leute,
    ich häng gerade irgendwie fest, ich denke das die Lösung negative Lookbehinds sind aber ich bekomme es einfach nicht hin.
    Es geht um eine Liste die so aussieht:

    Code
    Lorem Ipsum Lorem Ipsum Lorem Ipsum
    
        <li>Lorem Ipsum</li>
        <li>Lorem Ipsum</li>
        <li>Lorem Ipsum</li>
    
    Lorem Ipsum Lorem Ipsum Lorem Ipsum

    wie man sieht, fehlt das <ul> um die Liste und dieses Tag möchte ich gerne nachziehen.

    Der Regex müsste also nach Listen suchen, die sich nicht in <ul>'s befinden und diese ersetzen.
    Es würde mir schon helfen, wenn ich den Ansatz hätte zu prüfen ob sich vor einem <li> kein <ul> befindet.
    Ich probierte es mit:

    Code
    /(?<!<ul>)\W*<li>/

    aber das klappte irgendwie nicht.