Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP erstes vorkommen eines Strings ersetzen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
axelm
PostRank 7
PostRank 7
Beiträge: 603
Registriert: 18.10.2004, 11:42

Beitrag von axelm » 31.01.2012, 12:21

Hi,

Ich habe einen Text in einer Variable und möchte gerne das erste vorkommen eines String durch einen anderen String ersetzen.

also zb das erste auftauchen des Wort SEO durch Suchmaschinenoptimierung ersetzen.

$textMain = 'es gibt viele SEO Leute im Forum. SEO ist wichtig für gute Platzierungen'

$textReplace = 'SEO'
$textNew = 'Suchmaschinen Optimierung'


Vorschläge?
Axel der Autoschieber
<br><br>snippetoptimizer.de Snippet optimieren
<br><br>Css Cruncher Ladezeiten optimieren.
<br><br>Webmaster Tools

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 31.01.2012, 12:28

Preg_replace bietet Dir einen limit Parameter, um es z.B. auf eine Ersetzung zu begrenzen.

axelm
PostRank 7
PostRank 7
Beiträge: 603
Registriert: 18.10.2004, 11:42

Beitrag von axelm » 31.01.2012, 12:33

Preg_replace ist mir von der Performance zu teuer.
Will mit dem Server upgrade noch warten.
Axel der Autoschieber
<br><br>snippetoptimizer.de Snippet optimieren
<br><br>Css Cruncher Ladezeiten optimieren.
<br><br>Webmaster Tools

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 31.01.2012, 12:43

Dann nimm diese (bereits korrigierte) Variante von zombat:

https://stackoverflow.com/questions/125 ... irst-match

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 31.01.2012, 18:56

chris21 hat geschrieben:Dann nimm diese (bereits korrigierte) Variante von zombat:

https://stackoverflow.com/questions/125 ... irst-match
machste mal nen Lasttest?
axelm hat geschrieben:Preg_replace ist mir von der Performance zu teuer.
Will mit dem Server upgrade noch warten.
oldSchool .... ab mitte 1980ger bzw Anfang 90ger

Code: Alles auswählen

 $text = ' läölä l äöl äöl äl äö lä öl äö';
$word_old = 'SEO';
$word_new = 'Suchmaschinenoptimierung';

Code: Alles auswählen

 
$word_old_len = strlen&#40;  $word_old &#41;;
$pos1st = strpos&#40; $text, $word_old &#41;;

$text_new  = substr&#40; $text, 0, $pos1st &#41;;
$text_new .= $word_new;
$text_new .= substr&#40; $text, $pos1st  +  $word_old_len &#41;;
so sollte das tun ....
eventuell noch ein +1 oder -1

Code: Alles auswählen

 
$text_new  = substr&#40; $text, 0, $pos1st - 1 &#41;;
$text_new .= substr&#40; $text, $pos1st  +  $word_old_len + 1 &#41;;

fettmme
PostRank 2
PostRank 2
Beiträge: 31
Registriert: 13.04.2007, 18:43

Beitrag von fettmme » 01.02.2012, 18:36

axelm hat geschrieben:Preg_replace ist mir von der Performance zu teuer.
Will mit dem Server upgrade noch warten.
Micro-Optimierung ist meist übertrieben, führt aber oft zu schlechtem Code, im Sinne von schlecht wartbar.

Aus Interesse habe ich mit XDEBUG mal ein Profiling für einen Text mit 2038 Zeichen gemacht.

Ein einzelner Aufruf wird in Cachegrind nicht mal angezeigt. Bei einer Schleife mit 1.000 Ausführungen ergab das folgende Werte:

1.000 x preg_replace = 8,5 ms
2.000 x substr + 1.000 x strpos + 1.000 strlen = 6,3 ms

Im Vergleich dazu benötigte der Kram drumherum (auch als main bekannt :D ) 72ms.

Sowas ist zwar immer nur eine Momentaufnahme, ich würde an Deiner Stelle trotzdem preg_replace verwenden.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag