string in string ersetzen

Microhome

Erfahrenes Mitglied
Hallo ihr lieben,
hab mal wieder eine Frage und keine Ahnung wie ich da vom Ansatz her rangehen kann.
Ich habe einen string, zb.
$text = Das hier ist das Bild für eine URL §image;url;abb1.jpg§ und hier kommt das Bild dazu §image;pic;abb1_small.jpg§ und dann nix mehr
Jetzt möchte ich diesen String dursuchen und entsprechend ersetzen. Und das ganze soll so funktionieren:
1. den String nach §*§ durchsuchen. Immer was zwischen den § steht muss ersetzt werden.
Dabei muss der string zwischen den § gesplittet werden (Array), denn ich muss jedes mal gucken ob es de url oder nen pic ist.
2. je nachdem ob url oder pic muss dann entweder eine url oder ein Bild dangezeigt werden, also <a href="abb1.jpg">Abb 1 URL</a> oder <img src="abb1_small.jpg">

Tja, wie mache ich das?
Weiß wie gesagt echt absolut nicht wie ich da rangehen kann!?


Vielen Dank für eure Hilfe!
m!cro
 
Hi!
Wie dir Dennis schon erklaert hat gibt es den Befehl str_replace();
PHP:
<? $variablenname = str_replace("zu entfernender Text", "zu ersetzender Text", $variablenname);
echo $variablenname;
?>
lg Andulus
 
Hi,
ja sicher, damit kann ich innerhalb eines Strings etwas ersetzen, aber ich möchte doch das zu Ersetzende noch weiter verarbeiten. Der String zwischen den jeweiligen § soll ja untersucht werden und dementsprechend soll der Inhalt ersetzt werden!
 
Hi!
Ich schätze das müsstest du mit einer RegEx anfrage lösen.
PHP:
<?
$variablenname = ereg_replace("^[§]" "Ersatz", $variablenname);
$variablenname = ereg_replace(",[§]$" "Ersatz", $variablenname);
echo $variablenname;
?>
PS: Ich habs noch nicht getestet Aber probiers doch bitte mal aus, weil mein lokaler
Server tobt sich im Moment ein bisschen aus :(
lg Andulus


//EDIT:
Sorry, Ich weiß nicht was ich mir bei diesem Script gedacht habe, aber es funktioniert ganz sicher nicht ;) das weiss ich auch ohne dass ich es Teste.
 
Zuletzt bearbeitet:
Hallo,

anbei sende ich Dir eine Auswahl an Funktionen die Du Dir alle einmal
ansehen solltest, um Dir dann entsprechend auf Deine Bedürfnisse
den Code zu programmieren.
Teste einfach einmal durch, um zu verstehen wie Sie funktionieren.
Wahrscheinlich benötigt Du auch Bedingungen wie "IF", ELSEIF u.s.w...
Des weitern ist das Thema in diesem Tutorials sehr oft zu finden,
also suchen!
PHP:
<?
    ERROR_REPORTING(ALL);
    $variable = 'Wäre ich ein Holzfäller, so müßte ich Bäume fällen.';
###############################################################################   
    
    function umlaute_preg_r($vari){
    $umlaute =array("/ä/","/ü/","/ö/","/ß/");
    $ersetze= array("ae","ue","oe","ss");
    $vari = preg_replace($umlaute,$ersetze,$vari);
    return $vari;
    }
    echo umlaute_preg_r($variable)."<br>";
###############################################################################    
   
    function umlaute_str_replace($vari){
    $umlaute =array("ä","ü","ö","ß");
    $ersetze= array("ae","ue","oe","ss");
    $vari = str_replace($umlaute,$ersetze,$vari);
    return $vari;
    }
    echo umlaute_str_replace($variable)."<br>";
###############################################################################   
   
    function umlaute_strtr($vari){
    $replace = array('ä' => 'ae','ö' => 'oe','ü' => 'ue','ß' => 'ss');
    $vari = strtr($vari, $replace);
    return $vari;
    }
    echo umlaute_strtr($variable."<br>");
###############################################################################    
       
    $link ='<a href="www.Meine_Domain.de">meinedomain</a>';
        
    function url_preg_match($url){
    $preg_reg= "/(\<a href\=\")([w]{3}\.(.*)\.([a-z].*))(\"\>)(.*)(<\/a\>)/is";
    preg_match($preg_reg,$url,$vari);
    return $vari[2];
    }
        echo url_preg_match($link)."<br>";
################################################################################    
   
    function date_germany($date){    
    $preg_reg ="|(\d+)-(\d+)-(\d+)|";
    $date = preg_replace($preg_reg,"$3-$2-$1",$date);
    return $date ;
    }
    $datum = "2006-02-20";
    echo date_germany($datum)."<br>";
################################################################################
?>
Wünsche Dir viel Erfolg.


Gruß


RS9999;-)
 
Das sollte funktionieren:
PHP:
preg_match("/§(.*)§/is", "blablabla§inhalt§blablaga", $treffer);
echo $treffer[0]; // gibt dann "inhalt" aus
greetz
daddz
 
@daddz
das funktioniert solange nur einmal §*§ vorkommt aber ich habs ja ganz oft in dem String. Aber ich kann den regulären Audruck ja entsprechend anpassen, danke erstmal dafür!

@RS9999
schau ich mir alles gleich mal an, danke dir!


Ich informier euch dann darüber ob ich ne Funktion bauen konnte oder eben nicht.. :)


Vielen lieben Dank nochmal und erstmal einen schönen Abend!
 
PHP:
$preg_reg= "/(\<a href\=\")([w]{3}\.(.*)\.([a-z].*))(\"\>)(.*)(<\/a\>)/is";

Wenn du nur die Domian haben willst, kannste das noch etwas kürzen:

PHP:
$preg_reg= '#<a href="([w]{3}\.(.*)\.([a-z].*))">(.*)</a>#is';

Wobei dieser und der open genannte Regexp nicht ausfgeht, wenn z.B.
<a href="www.Meine_Domain.de" title="uhu">meinedomain</a>
da steht.

Dann würde ich etwas wie :

PHP:
$preg_reg= '#<a.*href="([w]{3}\.(.*)\.([a-z].*))".*>(.*)</a>#isU'

benutzen.
Man beachte auch den Modifer U
 
Also hab das jetzt so gemacht:
Code:
<?php
$zeichenkette = '§image;url;abb1.jpg§ hier steht kram dazwischen §image;url;abb2.jpg§ und noch mehr kram §image;url;abb3.jpg§';
$suchmuster = '/§(.*);(.*);(.*)§/';
$ersetzung = 'es ist eine $2 und die datei heißt $3';
echo preg_replace($suchmuster, $ersetzung, $zeichenkette);
?>
Problem ist aber, dass er das ganze nur einmal macht und somit quasi nur den letzten inhalt wiedergibt. Es soll aber der gesamte String ERSETZT wiedergegeben werden. Gibts dafür sowas wie eostring oder so für 'ne while-schleife?

Also als Ausgabe wird lediglich "es ist eine url und die datei heißt abb3.jpg" geliefert!
 

Neue Beiträge

Zurück