Reguläre Ausdrücke... Anführungszeichen

Halo Ihr,

ich bekomme es nicht hin, Folgende Aufgabe.

Aus:

"Hallo Welt" 

Soll:

\>\>Hallo Welt

werden.

Ich habs so versucht:


preg\_replace('/\b\$quot;+\b/','\>\>',$text);


Klappt aber nicht. Wo ist der Fehler?

Gruß

Florian

sorry aber hier kann man keine lösung posten lol
scheiss schrott system , schon seit jahren , deswegen gehen auch die leute wech

Hallo ,

preg_replace(’/\b$quot;+\b/’,’>>’,$text);

&qu ot;
zu
>>

^=am anfang

"/^&qu ot;/ " , „>>“

&qu ot;
zu

da sind jetzt leerzeichen drinne sonst macht des forum nur schrott .

Ja, das habe ich auch gedacht, aber NEIN, klappt nicht :frowning:

Wenn ich das & (also &amp:wink: wegnehme, dann gehts! Aber dann steht das „&>>“ Was muss ich machen, damit das &-Zeichen auch korrekt ersetzt und erkannt wird?

GLG

Florian

PS Alternativ das Anführungszeichen versucht (") - also vorher per Str_replace alles von " zu ", aber NIX :frowning:

Hai,

DANKE

„/&qu ot;$/“ , "

da sind jetzt leerzeichen drinne sonst macht des forum nur
schrott .

Guter Plan, hat nur einen Nachteil: Es wird nur am Anfang der Zeichenkette geschaut!

Bsp:
Aus:
„Hallo, wie gehts?“ - „Danke Gut!“
wird:
>>Hallo, wie gehts?" - "Danke Gut!>Hallo, wie gehts?>Danke Gut!

Ich habe hier kein PHP installiert, weil ich Java benutze, aber ich habe kurz online getestet auf http://www.myregextester.com. Wie wäre es mit:

<?php </pre>

    $sourcestring=""Hallo Welt"";





    echo&nbsp;preg\_replace('/"(.\*)"/','\>\>\1
    
    
    
        ?\>

Hallo ,

Guter Plan, hat nur einen Nachteil: Es wird nur am Anfang der
Zeichenkette geschaut!

das wäre ja mit //g zu beheben

Bsp:
Aus:
„Hallo, wie gehts?“ - „Danke Gut!“
wird:
>>Hallo, wie gehts?" - "Danke Gut!>Hallo, wie gehts?>Danke Gut!

und bei deinem ampersand ist bestimmt was durcheinander weil aus HTML extrahiert.
nimm mal das
html_entity_decode()
und guck obs hilft .

hallo

echo preg_replace(’/"(.*)"/’,’>>\1

wobei da wohl der schalter //g fehlt um alle in einer zeile abzuarbeiten .

Moin

wobei da wohl der schalter //g fehlt um alle in einer zeile
abzuarbeiten .

Eben, und //g wird doch nicht supportet, alternativen?

Gruß

F.

oh mein fehler
ich war bei preg_match und nciht bei preg_replace ,
das sollte eh alles ersetzen .

Hi,

das sollte eh alles ersetzen .

eben nicht :frowning:

Gruß

Florian

Hallo

das sollte eh alles ersetzen .

eben nicht :frowning:

beweisen und nicht an deinem beispiel denn bei dir vermute ich ist irgendwas schief, UTF-8 oder was auch immer .

Gruß

Florian

wie gesagt, beweisen :smile:

Moin,

beweisen und nicht an deinem beispiel denn bei dir vermute ich
ist irgendwas schief, UTF-8 oder was auch immer .

DASSS hatte ich total übersehen… wie sollte ich das HTML-Doc denn Formatieren? UTF-8 oder explizit NICHT UTF8?

Gruß

Florian

Hi,
du must den Teil, der unverändert bleiben soll (Hallo Welt) inb Klammern setzen, damit du im Ersetzungsausdruck darauf als „Backreference“ verweisen kannst.
PHP:

$source = '"Hallo Welt"';
$pattern = '/"(Hallo Welt)"/';
$replace = '\>\>$1\<\<';
$new = preg\_replace($pattern, $replace, $source);
echo $new;

$1 ist eine Back reference auf den ersten geklammerten Teil des Suchmusters. $0 wäre eine Referenz auf den gesamten String, $2, $3 usw. weitere Back references auf mehr Klammerungen.
Genauer gesagt bezieht sich eine Back reference nicht direkt auf das Suchmuster selbst, sondern auf den Teil im Eingabestring, der durch das Suchmuster bzw. die geklammerten Teile getroffen wird. Das Bsp. oben ist ja nonsense. Wenn du im echten Leben z.B. alles auf diese Weise behandeln willst, das in " eingeschlossen ist, dann lautet dein Suchmuster:
/"(.+?)"/
Und egal ob deine Eingabe nun „Hallo schöne Welt“ oder „wumpel pumpel irksefis“ lautet: alles, was in den Gänsefüßchen steht, wird in >>…

Mit PHP kenne ich mich nicht aus. Aber in Java, das auch reguläre Ausdrücke benutzt werde ich das mal probieren.
Gruß Volkert