[PHP] Bestimmte Zeichenfolge in einem String ersetzen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Firefox User, 19. September 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. September 2010
    Bestimmte Zeichenfolge in einem String ersetzen

    Hallo,

    wenn ich einen String habe:
    PHP:
    $string  'Hallo, ich bin @ein Teststring von @Firefox User' ;
    Wie kann ich dann die Wörter die mit @beginnen mit Wörter ersetzen, die in einer db stehen?
    Es kann auch sein, dass zwei Wörter zu ersetzen sind, wie hier z.B. Firefox User. Dann müsste überprüft werden, ob auch noch ein Eintrag mit dem nächsten Wort in der Datenbank existiert.

    Weis jemand einen Code etc. dafür?
     
  2. 19. September 2010
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    Es gibt 2 Möglichkeiten Strings zu ersetzen :

    PHP: str_replace - Manual
    PHP: preg_replace - Manual


    Wobei für dich die zweite Funktion mit regulären Ausdrücken eher in Frage kommt.
    Wenn du hingegen Strings suchen möchtest, brauchst du für deinen Fall :

    PHP: preg_match_all - Manual



    Wenn du noch genauer erklärst, was du machen willst oder wo du genau Probleme hast, können wir dir helfen.
     
  3. 19. September 2010
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    Willst du das ähnlich wie bei Fb machen?



    Code:
    Was ich gerade mache:
    
    Ich bin gerade mit @Anna unterwegs
    Wobei Anna dann mit ihrem Profillink unterlegt ist?


    Edit:// Ansonsten wenn es nicht so ist hat Mahjong alles schon gesagt.
    Musst du dich in RegEx einlesen.
     
  4. 19. September 2010
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    gibt es einen grund wieso du kein zweites zeichen als begrenzer nimmst?

    @firefox user@

    das würde es erheblich einfacher machen zu coden

    es sei denn du willst einfach nur nen string ersetzen nach dem motto

    PHP:
    $neuerString  "test" ;
    $alterString  "@firefox user" ;
    $string  str_replace ( $alterString $neuerString $string );
     
  5. 7. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    hey habe ein ähnliches problem und der threat eröffner hat ja leider auf keine lösung geschrieben.

    ich habe folgenden string und würde gerne worte die mit einem # anfangen highlighten. also ein div tag meiner wahl drum rum setzen.

    PHP:
    $string = "hallo #das hier ist ein #probe anlauf" ;
    ich kann zwar mit strtok den string an der stelle # durchtrennen aber dann kommt ja leider nur das bei raus:

    hallo
    das hier ist ein
    probe anlauf

    danke für eure hilfe

    gruß
    marcel

    edit//ja ist um eine twitter timeline zu highlighten
     
  6. 7. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    So funktioniert es!

    P.s.: SPAN-Tags eigenen sich besser als DIV-Tags

    PHP:
    <? PHP
    $string 
    'Hallo #welt dies ist ein test mit viele #tags' ;

    $string  preg_replace ( '/#(\w+)/' '<span class="tag">$1</span>' $string ); 
    ?><!DOCTYPE html>
    <html>

        <head>
            <title>Twitter Tag Highlight</title>
            
            <style type="text/css">
                span.tag { background-color: #f00; }
            </style>
        </head>
        
        <body>
            <?PHP  echo  $string ?>
        </body>
    </html>
     
  7. 7. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    mein senf:
    PHP:
    <? PHP

    define
    ( 'TAG_START' '@' );

    $string  'Hallo @welt dies ist ein test mit vielen @tags und sogar @(mit leerzeichen)' ;
    $string  preg_replace_callback ( '/'  TAG_START  '(\w+|\([^\)]+\))/' 'parse_tag' $string ); 

    function 
    parse_tag ( $match )
    {
        
    $value  $match [ 1 ];
        
        if(
    $value [ 0 ] ===  '(' )
            
    $value  substr ( $value 1 , - 1 );
            
        return 
    '<span class="tag">'  $value  '</span>' ;
    }

    ?>
    <!DOCTYPE html>
    <html>

        <head>
            <title>Twitter Tag Highlight</title>
            
            <style type="text/css">
                span.tag { background-color: #f00; }
            </style>
        </head>
        
        <body>
            <?PHP  echo  $string ?>
        </body>
    </html>
     
  8. 7. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    danke dafür! funktioniert super! da war mein versuch schon ein wenig komplizierter

    bw geht grad nicht wird aber noch nachgereicht.

    gruß
    marcel
     
  9. 8. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    oder auch so:
    PHP:
    <? php
    define
    ( 'TAG_START' '@' );
    $string  'Hallo @welt dies ist ein test mit vielen @tags und so @(leider-ohne-leerzeichen)' ;
    foreach(
    explode ( ' ' , $string ) as  $n  =>  $val ){
        if(
    strpos ( $val , '@' )!== false ){
            
    $string  str_replace ( $val , '<span style="color:red">' . $val . '</span>' , $string );
        }
    }
    echo 
    $string ;
    ?>
    mit leerzeile wäre auch möglich gewesen. dafür ist der code viel schneller als regex (/)§$"§^^
     
  10. 9. Januar 2011
    AW: Bestimmte Zeichenfolge in einem String ersetzen

    @funland

    dein code im vergleich zu Nanobytes code

    Code:
    100000 aufrufe
    
    funland: 1.4340250492096
    funland (optimiert): 0.96283102035522
    Nanobyte: 0.30490493774414
    beim nächsten mal vorher mal benchmarken

    mein script:
    PHP:
    <? php

    set_time_limit
    ( 0 );

    $t  microtime ( true );
    bench1 ();

    print 
    'funland: '  . ( microtime ( true ) -  $t ) .  '<br />' ;

    $t  microtime ( true );
    bench1_optimized ();

    print 
    'funland (optimiert): '  . ( microtime ( true ) -  $t ) .  '<br />' ;

    $t  microtime ( true );
    bench2 ();

    print 
    'Nanobyte: '  . ( microtime ( true ) -  $t ) .  '<br />' ;

    // ------------

    function  bench1 () 
    {   
        
    define ( 'TAG_START' '@' );
        
        for(
    $i  0 $i  100000 ; ++ $i ) {
            
    $string  'Hallo @welt dies ist ein test mit vielen @tags und so @(leider-ohne-leerzeichen)' ;
            foreach(
    explode ( ' ' , $string ) as  $n  =>  $val ){
                if(
    strpos ( $val , '@' )!== false ){
                    
    $string  str_replace ( $val , '<span style="color:red">' . $val . '</span>' , $string );
                }
            }
        }
    }

    function 
    bench1_optimized () 
    {   
        for(
    $i  0 $i  100000 ; ++ $i ) {
            foreach(
    explode ( ' ' 'Hallo @welt dies ist ein test mit vielen @tags und so @(leider-ohne-leerzeichen)' ) as  $val )
                if(
    $val [ 0 ] ===  '@' )
                    
    $string  strtr ( $string , array( $val  =>  '<span style="color:red;">'  $val  '</span>' ));
        }
    }

    function 
    bench2 ()
    {
        for(
    $i  0 $i  100000 ; ++ $i )
            
    $string  preg_replace ( '/@(\w+)/' '<span style="color:red">$1</span>' 'Hallo @welt dies ist ein test mit vielen @tags und so @(leider-ohne-leerzeichen)' );
    }
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.