tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von timestamp
  • 1 Beitrag von timestamp
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
650
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DrBonsai DrBonsai ist offline Mitglied Silber
    Registriert seit
    Mar 2010
    Beiträge
    52
    N´Abend.

    Wie kann ich in der Funktion str_replace erreichen, dass der String jeweils durch die Nummer der Ersetzung ersetzt wird?
    Also bei der ersten Ersetzung
    str_replace('pagebreak', '1', $string), dann
    str_replace('pagebreak', '2', $string) etc?

    Danke schonmal und Gute Nacht.

    mfg,
    David
     

  2. #2
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Vielleicht ist es mit preg_replace_callback machbar aber nicht mit str_replace denn das ersetzt ALLE vorkommen durch die selbe Ersetzung.
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  3. #3
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Hi

    versuche doch das mal:
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    $str "Ich wohne in einem Haus, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.";
    $i 0;
    $pre "";
    do{
      
    $i++;
      
    $pre $str;
      
    $str preg_replace("/einem Haus/","Haus".$i,$str,1);
    }
    while( 
    $pre != $str );
    echo 
    $str// Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in Haus3
    ?>
    DrBonsai bedankt sich. 
    Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
    ( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
    "Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
    RegEx Tutorial
    PHP Funktionsreferenz

  4. #4
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    @timestamp: Ich fürchte das wird nicht funktionieren.
    Es macht nur einen Durchgang da du selbst $pre = $str setzt.

    Wäre evtl machbar wenn man den String durchsucht und mit der position arbeitet. Also den String am Vorkommen splittet und wieder zusammensetzt.

    Oder wie wäre es mit preg_split.
    PHP-Code:
    <?php
    $str 
    'Ich wohne in einem Haus, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.';
    $parts preg_split('/einem Haus/'$str, -1PREG_SPLIT_OFFSET_CAPTURE);
    $str "";
    for(
    $i=0; isset($parts[$i+1]); $i++)
    {
        
    $str .= $parts[$i][0]."Haus".($i+1);
    }
    $str .= $parts[$i][0];
    echo 
    $str// Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in Haus3 
    ?>
    Geändert von Da_Chris (15.05.10 um 17:02 Uhr)
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  5. #5
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Zitat Zitat von Da_Chris Beitrag anzeigen
    @timestamp: Ich fürchte das wird nicht funktionieren.
    Es macht nur einen Durchgang da du selbst $pre = $str setzt.
    Falsch! Ich habe es getestet, die Ausgabe kannst du in meinem Code sehen. Da $str nach dem zuweisen an $pre geändert wird, funktioniert die Schleife und läuft so lange durch, bis nichts mehr geändert wird
     
    Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
    ( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
    "Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
    RegEx Tutorial
    PHP Funktionsreferenz

  6. #6
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Sehr eigenartig es geht tatsächlich.
    Aber warum?
    Rein vom logischen Ablauf müsste er beim ersten Durchlauf wieder raus gehen.
    Da wäre eine Erklärung interessant.
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  7. #7
    Avatar von timestamp
    timestamp timestamp ist offline Mitglied Rubin
    Registriert seit
    May 2010
    Ort
    Marburg
    Beiträge
    1.479
    Hi

    eine sehr einfache Antwort gibt dir diese leichte Modifizierung
    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    $str "Ich wohne in einem Haus, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.";
    $i 0;
    $pre "";
    do{
      
    $i++;
      
    $pre $str;
      
    $str preg_replace("/einem Haus/",'Haus'.$i.'',$str,1);
      echo 
    "PRE: ".$pre."<br />";
      echo 
    "STR: ".$str."<br />";
      echo 
    "<br />";
    }
    while( 
    $pre != $str );
    echo 
    $str;
    ?>
    Das liefer nämlich:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    PRE: Ich wohne in einem Haus, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.
    STR: Ich wohne in Haus1, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.
     
    PRE: Ich wohne in Haus1, Peter wohnt in einem Haus, Klaus wohnt in einem Haus.
    STR: Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in einem Haus.
     
    PRE: Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in einem Haus.
    STR: Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in Haus3.
     
    PRE: Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in Haus3.
    STR: Ich wohne in Haus1, Peter wohnt in Haus2, Klaus wohnt in Haus3.

    Jetzt kann man eigentlich schon sehen was passiert.
    $pre erhält den ursprünglichen Wert von $str. In der nächsten Zeile wird $str dann allerdings der Rückgabewert von preg_replace zugewiesen. So fern etwas ersetzt wurde, unterscheidet sich $pre nun natürlich von $str. Das ganze funkioniert nur, weil $pre _vor_ dem Funktionsaufruf $str zugewiesen bekommt.
    Da_Chris bedankt sich. 
    Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
    ( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
    "Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
    RegEx Tutorial
    PHP Funktionsreferenz

  8. #8
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    mh doch so is logisch
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  9. #9
    DrBonsai DrBonsai ist offline Mitglied Silber
    Registriert seit
    Mar 2010
    Beiträge
    52
    Die Firma dankt,

    ich hab es folgendermassen gemacht, aufbauend auf deiner Idee, timestamp

    PHP-Code:
        $pages substr_count($text4'página string_pagina_page_number')+1;
        for (
    $page_number 2$page_number <=$pages$page_number++)
        {
        
    $text5 preg_replace('/string_pagina_page_number/'$page_number$text4,1);
        
    $text4 $text5;
        } 
    mfg,
    David
     

Ähnliche Themen

  1. Formular mit fortlaufender Nummer
    Von civicmx im Forum PHP
    Antworten: 18
    Letzter Beitrag: 11.01.10, 22:14
  2. Access / VBA: Zuweisen nächster fortlaufender Nummer
    Von WiZdooM im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 17.04.09, 16:25
  3. fortlaufender Zähler in SQL ? (x=x+1 ..)
    Von jWaehlt im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 16.11.06, 00:25
  4. Array initalisierung mit fortlaufender Nummer
    Von echelon im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 04.11.05, 05:42
  5. JComboBox mit nicht fortlaufender INDEX-Markierung
    Von AlexD1979 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 15.08.03, 22:08

Stichworte