Kleine Frage zu preg_replace

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

  • PHP-Desaster
    antwortet
    So viele Regex halte ich für etwas heftig! Würde eher zu einer Lösung in dieser Richtung tendieren:
    PHP-Code:
    $search '{image}';
    $pos 0;
    foreach( 
    $sim as $img ) {
       
    $pos strpos$code$search$pos );
       if( 
    $pos===false ) {
          break;
       }
       
    $code substr_replace $code$img$pos$pos+);
       
    $pos += strlen$img );

    Ist natürlich ungetestet, ist imho aber fixer!

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    kk kann beruhigt sein - dauerte doch net so lange
    PHP-Code:
    $mb substr_count($code'{image}');
    $suchmuster '/{image}/';
    for(
    $a=0;$a<=$mb;$a++){
    $code preg_replace($suchmuster$sim[$a], $code,1);
    }
    echo 
    $code
    und tada - es ging ...

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    Original geschrieben von jahlives
    Oder du verpasst den {image} noch eine Nummer um sie eindeutig zu machen
    geht ja nicht - das sind 4600 artikel und {image} in jedem ne id geben - da sitzt ich in 10 jahren noch drann

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    ne verdammt geht auch net - nur von artikel zu artikel - pro artikel kommen dieselben bilder - iss ja auch klar - der ersetzt ja auch alle {image} ... mal sehen wie sich das lösen lässt - das wird ne lange nacht

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    kk habs so gelöst - ich zähle die vorkommen des "{image}" erstelle ein array daraus und habe so ein array das zum ersetzen dient. ka warum deins nicht ging - das hier geht:
    PHP-Code:
    $mb substr_count($code'{image}');
    for(
    $a=1;$a<=$mb;$a++){$ce[]="{image}";}
    echo 
    str_replace($ce,$sim,$code); 
    trotzdem danke

    Einen Kommentar schreiben:


  • jahlives
    antwortet
    jein da habe ich überall dasselbe bild
    Na ja schonmal besser als überall Array
    Aber eigentlich sollte das nicht sein, denn du hast ein Array search mit x Elementen und ein Array replace mit x Elementen. Also sollte doch für jeden Wert in search das entsprechende Element aus replace genommen werden
    Aber vielleicht liegts auch daran, dass str_replace() alle Vorkommen ersetzt. Also vermute ich mal, dass du jeweils in allen Bildern das erste Bild hast.
    Da du immer den gleichen search hast wird die Ersetzung wohl nur einmal gemacht und danach gibt es kein {image} mehr.
    Also brauchst du wohl oder übel doch einen RegExp... Oder du bastelst dir etwas mit einer Schleife, das jeweils nur das erste Vorkommen ersetzt und dann den nächsten Schleifendurchlauf startet...
    Oder du verpasst den {image} noch eine Nummer um sie eindeutig zu machen

    Gruss

    tobi

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    jein da habe ich überall dasselbe bild

    Einen Kommentar schreiben:


  • jahlives
    antwortet
    Quick and Dirty:
    PHP-Code:
    $str str_replace(array_fill(0,count($sim),'{image}'),$sim,$str); 
    Klappt das denn so?

    Gruss

    tobi

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    PHP-Code:
    array(4) { 
    [
    0]=>  string(28"livestyle/enchantment01.jpg " 
    [1]=>  string(28"livestyle/enchantment01.jpg " 
    [2]=>  string(27"livestyle/enchantment02.jpg" 
    [3]=>  string(0"" 

    Einen Kommentar schreiben:


  • jahlives
    antwortet
    PHP-Code:
    var_dump($sim); 
    ergibt was?

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    also:

    PHP-Code:
    for($i=0;$i<=count($img);$i++){
        
    $im explode("|",$img[$i]);
        
    $sim[] = $im[0];

    gibt mir die images in das array "sim"
    mit "str_replace("{image}", $sim, $code);" erhalte ich aber als anzeige nur "Array" und nicht das gewünschte Bild ...

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    allet klar ersetzen per array - omg übersehen

    Einen Kommentar schreiben:


  • dani_o
    antwortet
    öhm str_replace? das ersetzt doch alles! "{image}" bleibt so!

    Einen Kommentar schreiben:


  • jahlives
    antwortet
    nun soll per peg_replace ein image nach dem anderen ersetzt werden. 1. fund = image 1 2. fund = image 2 u.s.w.
    RegExp ist überflüssig. Dein Vorhaben kann str_replace() auch.

    Gruss

    tobi
    EDIT:

    War ich wohl zu lahm

    Einen Kommentar schreiben:


  • unset
    antwortet
    Dafür musst du nicht die RegExp-Maschine anwerfen. str_replace() ist dein Freund.

    Einen Kommentar schreiben:

Lädt...
X