preg_replace?????

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

  • preg_replace?????

    Hi!

    Suche ein preg_replace das folgendes macht.

    ich habe einen string, in dem bel. oft || vorkommt und zsichen zwei || auch ein Text der art 'irgendwas beliebiges, was nicht bekannt ist' stehen kann.
    ich hätte gern, dass alle || durch , ersetzt werden (krieg ich hin) und das vor dem wort vor dem ersten || ein concat( und nach dem wort nach dem letzten || ein )

    geht das irgendwie?

    Kleines Beispiel (erklären is nich meine stärke)
    Code:
    a, b || c || 'hilfe das is mir zu hoch' || d ||'und dir?', e
    ==>
    a, CONCAT(b , c , 'hilfe das is mir zu hoch' , d ,'und dir?'), e
    
    b || c || 'hilfe das is mir zu hoch' || d ||'und dir?', e
    ==>
    CONCAT(b , c , 'hilfe das is mir zu hoch' , d ,'und dir?'), e
    
    a, b || c || 'hilfe das is mir zu hoch' || d ||'und dir?'
    ==>
    a, CONCAT(b , c , 'hilfe das is mir zu hoch' , d ,'und dir?')
    
    b || c || 'hilfe das is mir zu hoch' || d ||'und dir?'
    ==>
    CONCAT(b , c , 'hilfe das is mir zu hoch' , d ,'und dir?')
    falls immernoch zu schlecht erklärt/bebeispielt (gibt's das überhaupt?):
    ich will die verknüpfungsoperation von oracle sql*plus nach mysql portieren
    Ich denke, also bin ich. - Einige sind trotzdem...

  • #2
    aus dem Bauch heraus.
    Gibt bestimmt einfacheres
    Code:
    preg_replace("#([^,\n\r]*\|\|[^,\n\r]*)#ise","'concat('.str_replace('||',',','\\1').')'",$text);
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      danke, funzt einwandfrei in 50% der fälle
      hab folgende ausgabe:
      select a, b || c || 'hilfe das is mir zu hoch' || d ||'und dir?', e
      select a,concat( b , c , 'hilfe das is mir zu hoch' , d ,'und dir?'), e

      select b || c || 'hilfe das is mir zu hoch' || d ||'und dir?', e
      concat(select b , c , 'hilfe das is mir zu hoch' , d ,'und dir?'), e

      select a, b || c || 'hilfe das is mir zu hoch' || d ||'und dir?'
      select a,concat( b , c , 'hilfe das is mir zu hoch' , d ,'und dir?')

      select b || c || 'hilfe das is mir zu hoch' || d ||'und dir?'
      concat(select b , c , 'hilfe das is mir zu hoch' , d ,'und dir?')
      es klappt also nur, wenn noch ein parameter vor dem b steht, wenn jedoch keiner davor steht, funzt es nich
      hab vergessen hinzuschreiben,dass da noch ein select vornedran steht (mea culpa), aber das krieg ich ja auch einfach weg, is ja immer das erste wort und immer gleich lang (denk ich zumindest *g* )

      also nochmals vielen dank

      --
      edit
      Wärst du wohl auch so freundlich mir das Ding zu erklären?
      Ich hab ja noch die Hoffnung, dass ich das irgendwann auch versteh
      Zuletzt geändert von mrhappiness; 14.01.2003, 22:20.
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        preg_replace("#(
        [^,\n\r]* => alles was kein Komma oder Zeileumbruch ist, beliebig oft
        \|\| => es muß || drin vorkommen
        [^,\n\r]* => alles was kein Komma oder Zeileumbruch ist, beliebig oft
        )#is
        e => Ersetzung als PHP Code ausführen
        ","
        'concat('.str_replace('||',',','\\1').')' => String zusammenbauen (normaler PHP Code) , wobei \\1 der String aus dem preg_ ist
        ",$text);
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar

        Lädt...
        X