Kleine Frage zu preg_replace

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PHP-Desaster
    replied
    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!

    Leave a comment:


  • dani_o
    replied
    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 ...

    Leave a comment:


  • dani_o
    replied
    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

    Leave a comment:


  • dani_o
    replied
    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

    Leave a comment:


  • dani_o
    replied
    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

    Leave a comment:


  • jahlives
    replied
    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

    Leave a comment:


  • dani_o
    replied
    jein da habe ich überall dasselbe bild

    Leave a comment:


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

    Gruss

    tobi

    Leave a comment:


  • dani_o
    replied
    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"" 

    Leave a comment:


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

    Leave a comment:


  • dani_o
    replied
    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 ...

    Leave a comment:


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

    Leave a comment:


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

    Leave a comment:


  • jahlives
    replied
    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

    Leave a comment:


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

    Leave a comment:

Working...
X