php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.02.2012, 19:02  
Benutzer
 
Registriert seit: 19.12.2011
Beiträge: 36
PHP-Kenntnisse:
Anfänger
derhunter06 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Suchen und ersetzen (jedes 3 Wort und max. 10)

Hallo,

ich würde gerne in einem Text ein ebstimmtes Wort suchen und diese ersetzen, soweit klar.
Wenn ich aber jetzt max. 10 Wörter ersetzen will füge ich dem Befehl "preg_replace" $count hinzu, soweit klar.
ABER wenn ich jetzt nur jedes 3 Wort ersetzen will ab dem ersten, also das 1., 5., 9., usw. wie stelle ich das an? Gibt es da einen Befehl für oder muss ich mir eine komplizierte Abfrage bauen?

Über Hilfe würde ich mich sehr freuen

Viele Grüße,

Mirko
derhunter06 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.02.2012, 19:06  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

http://php.net/manual/de/function.pr...e-callback.php

damit.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 11.02.2012, 19:25  
Benutzer
 
Registriert seit: 19.12.2011
Beiträge: 36
PHP-Kenntnisse:
Anfänger
derhunter06 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Tr0y,

danke für deine schnelle Antwort, aber ich glaube, dass ich damit nicht das ereiche was ich möchte.
Ich will in einem Text jedes 3. Wort ersetzen... oder ich habe den Befehl nicht ganz verstanden

Gruß Mirko
derhunter06 ist offline   Mit Zitat antworten
Alt 11.02.2012, 19:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja.


Forenrichtlinien
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 11.02.2012, 20:28  
Benutzer
 
Registriert seit: 19.12.2011
Beiträge: 36
PHP-Kenntnisse:
Anfänger
derhunter06 befindet sich auf einem aufstrebenden Ast
Standard

@nikosh, ich will nicht das jemand mein script schreib, dass will ich shcön sleber machen. Aber ich will es lernen und bin gerade an einem Punkt wo ich nicht weiß wie ich weiter machen soll. Jetzt hat Tr0y mir ein gute Idee vermittelt, die ich aber (das muss an mir liegen) nicht ganz umsetzen kann und bräuchte evtl. nur noch einen kleinen schubs in die richtige richtung?! Keine Sorge die FOrum Suche und Google habe ich schon gefüttert mit diesem Befehl, aber da komme ich wie gesagt nicht zum weißheit letzten Schluss... schade dann werde ich mich mal noch wo anders umhören müssen

Viele dank aber für eure Hilfe.
derhunter06 ist offline   Mit Zitat antworten
Alt 11.02.2012, 21:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
nicht ganz umsetzen kann und bräuchte evtl. nur noch einen kleinen schubs in die richtige richtung?!
Dann stell den Versuch so weit wie Du gekommen bist hier zur Diskussion. So machen wir das hier, nicht anders herum. Ich wüßte nicht, was man jetzt noch groß schubsen sollte.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 11.02.2012, 21:35  
Benutzer
 
Registriert seit: 19.12.2011
Beiträge: 36
PHP-Kenntnisse:
Anfänger
derhunter06 befindet sich auf einem aufstrebenden Ast
Standard

Ich habe nun einen Lösungsansatz den ich versuche zu realisieren und werde den dann hier online stellen, damit andere mit diesem Problem eine Lösungsidee zur ansicht bekommen.
derhunter06 ist offline   Mit Zitat antworten
Alt 12.02.2012, 14:28  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von derhunter06 Beitrag anzeigen
Hallo,

ich würde gerne in einem Text ein ebstimmtes Wort suchen und diese ersetzen, soweit klar.
Wenn ich aber jetzt max. 10 Wörter ersetzen will füge ich dem Befehl "preg_replace" $count hinzu, soweit klar.
Nein, die Suche limitieren kannst du mit dem $limit-Parameter (deswegen sein Name ). Gibts du $count an, wird die Variable mit der Anzahl der vorgenommenen Ersetzungen überschrieben. Das ist sicher nicht das, was du erreichen wolltest.

Zitat:
ABER wenn ich jetzt nur jedes 3 Wort ersetzen will ab dem ersten, also das 1., 5., 9., usw. wie stelle ich das an? Gibt es da einen Befehl für ...
Nein, selbstverständlich nicht. Wir sind hier leider nicht im Python-Land, wo man aus sequenziellen Datentypen (also auch aus Strings) solche abgezählten Sequenzen herausziehen kann.

Zitat:
... oder muss ich mir eine komplizierte Abfrage bauen?
Du musst dir etwas selbst bauen. Ob das (für dich) kompliziert erscheint, hängt von deinem Wissensstand ab.

Die Funktion preg_replace_callback() ist kein schlechter Kandidat. Du übergibst ihr eine benutzerdefinierte Funktion, die die Zählarbeit übernimmt. Fange am besten ohne deine zusätzlichen Anforderungen an: Lass von ihr nur das zu suchende Muster zurückgeben. Anschließend baust du einen Zähler ein und am Ende die "Überspringen"-Funktion. Hierbei kann der Modulo-Operator sehr nützlich sein.

Mir ist preg_replace_callback() aber zu kompliziert für diese Aufgabe. Daher hier eine Beispiellösung nur mit preg_replace():

PHP-Code:
function replace_some(
    
$where// where to search (a.k.a. the haystck)
    
$what// what to replace (a.k.a. the needle)
    
$with// replace with
    
$how_often// maximum
    
$skip // skip number of found patterns
) {
    if (!
is_int($how_often) || $how_often < -1) {
        return 
null;
    }
    
// 0xffff is the limit for quantifiers in PCRE
    
if (!is_int($skip) || $skip || $skip 0xffff) {
        return 
null;
    }

    
$pcre sprintf(
        
// find every $skip'th pattern
        //'/(?:%1$s.*?){%2$d}\K%1$s/is',
        // find every $skip'th pattern, but starts with the 1st
        
'/(?:\A.*?|(?:%1$s.*?){%2$d})\K%1$s/is',
        
preg_quote($what'/'),
        
$skip
    
);
    return 
preg_replace(
        
$pcre$with$where$how_often
    
);
}

$src 'Schneuf-schneuf-di-schneuf, schnifl-di-schneuf-schneuf-schneuf, ...';

// Anwendungsbeispiel:
// ersetzt 3x jedes 2. gefundene "schn" mit "*ZENSORED*":
var_dump(
    
replace_some($src'schn''*ZENSORED*'32)
); 

Geändert von fireweasel (12.02.2012 um 16:56 Uhr). Grund: typos; schnolf zu schneuf (man lernt nie aus)
fireweasel ist offline   Mit Zitat antworten
Alt 12.02.2012, 15:41  
Benutzer
 
Registriert seit: 19.12.2011
Beiträge: 36
PHP-Kenntnisse:
Anfänger
derhunter06 befindet sich auf einem aufstrebenden Ast
Standard

@fireweasel
ich glaube ich sag erst mal Danke. Nicht nur dafür das du mir einen BeispielCode heschrieben hast, sondern vorallem für die SUPER Erklärung. Mein Ansatz ging schon in die Richtung wie du Ihn hier gepostet hast, aber nicht so gut. Vielen Dank.
derhunter06 ist offline   Mit Zitat antworten
Alt 12.02.2012, 15:43  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von derhunter06 Beitrag anzeigen
@fireweasel
ich glaube ich sag erst mal Danke. Nicht nur dafür das du mir einen BeispielCode heschrieben hast, sondern vorallem für die SUPER Erklärung. Mein Ansatz ging schon in die Richtung wie du Ihn hier gepostet hast, aber nicht so gut. Vielen Dank.
Und ich hab nur auf deinen Ansatz gewartet
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Von Wort x bis Wort y, Text löschen tb_spam PHP Einsteiger 13 31.01.2012 19:33
[Erledigt] Wort aus string entfernen (mit Zahl) B2Bwebsites PHP Einsteiger 3 07.04.2011 22:30
[Erledigt] if XML Wort leer funktioniert nur Lokal? pdotk PHP-Fortgeschrittene 17 30.01.2011 11:06
Zeichen in ein Wort dazwischen fügen ? sesql PHP Tipps 2009 6 04.10.2009 11:22
[Erledigt] Leereichen und Umlaute ersetzen thiagojonas PHP Tipps 2009 13 06.07.2009 15:03
preg_match und my_sql ersetzen blacklc2 PHP Tipps 2009 2 23.02.2009 20:24
[Erledigt] REGEXP - Wort nicht in/zwischen bestimmten Tags ersetzen Peppie JavaScript, Ajax und mehr 2 07.02.2009 20:52
erkannte Wörter ersetzen, aber nur als eigenen Begriff...? BartTheDevil89 PHP Tipps 2008 6 07.01.2008 15:41
Wort einmal ersetzen themonk PHP Tipps 2007 4 07.04.2007 18:02
String ersetzen Benshee PHP Tipps 2006 4 02.04.2006 21:43
Realsierungsproblem - Text ersetzen mit Link PHP Tipps 2006 3 19.01.2006 17:31
Update per Cronjob (where Feld = Wort) Apfeltyp PHP Tipps 2004-2 3 14.12.2004 18:25
[Erledigt] includ. Text ersetzen ohne vars PHP Tipps 2004 3 13.09.2004 23:16
Reguläre Ausdrücke beim suchen und ersetzen Off-Topic Diskussionen 5 05.07.2004 15:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
suchen und ersetzen jedes dritte zeichen, jedes zweite wort ersetzen, nur ebstimmtes zeichen ersezten php, php text ersetzen ohne ahtml, pcre ersetzen ausdruck durch zähler

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum