PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Problem mit preg_replace und \ (https://www.php-resource.de/forum/php-developer-forum/93933-problem-mit-preg_replace-und.html)

rlebek 29-09-2008 16:09

Problem mit preg_replace und \
 
Liebes Forum,

ich möchte alle \ aus einem string löschen, leider funktioniert es nicht. Ich mache es folgendermaßen:

PHP-Code:

$txt=preg_replace('/\\/i','',$txt); 

Ich habe auch schon gegoogled und leider nichts passendes gefunden.

Danke für Eure Hilfe
Gruss
RON

TobiaZ 29-09-2008 16:22

ist n Witz, oder?

str_replace("\\","",$subject);

H2O 29-09-2008 16:26

PHP-Code:

$txt=preg_replace('/\\\\/'''$txt);
// oder einfacher:
$txt str_replace('\\\\\\'''$txt); 


rlebek 29-09-2008 16:27

funktioniert, danke.
habe das nur mit preg_replace probiert und das geht scheinbar nicht.

Danke nochmal

TobiaZ 29-09-2008 16:33

Zitat:

habe das nur mit preg_replace probiert und das geht scheinbar nicht.
Klar geht das auch mit den preg-funktionen. Nur ist das total übertrieben, wenn es nur darum geht einen String durch einen anderen (leeren) String zu ersetzen.

Griecherus 29-09-2008 17:04

Um's mal etwas zu verdeutlichen: Regex sind dafür gedacht, nach Muster zu suchen. Geht es um Konkrete Zeichen(ketten), lässt sich das ohne Regex simpler und performanter lösen.
PHP-Code:

// bad_example.php

$str '/i/am/a/strange/string/';

// tausche alle / gegen ein Leerzeichen
$str str_replace('/'' '$text);

// entferne / am Anfang der Zeichenkette
$str ltrim($text'/');

// entferne / am Ende der Zeichenkette
$str rtrim($text'/');

// tausche alle /, die einem Buchstaben folgen, gegen ein Leerzeichen
$str preg_replace('/(?<=[a-z])\\//i'' '$text); 

Grüße

rlebek 29-09-2008 17:10

Hallo nochmal,

wenn ich folgendes probiere:

PHP-Code:

$txt=preg_replace('/\\/'''$txt); 


erhalte ich immer die Fehlermeldung:

PHP-Code:

No ending delimiter '/' found 

Also mit preg_replace funktionierts bei mir nicht. Eigentliches Ziel dieser Aufgabe ist Sonderzeichen umzuwandeln:

z. B. \u00c4 in Ä bzw. &Auml;

Am besten würde da wahrsacheinlich ein preg_replace_callback funktionieren.

Viele Grüsse
RON

Griecherus 29-09-2008 17:15

Da das zu suchende Zeichen und die Delimeter identisch sind, gibts zwei Optionen:
1. anderen Delimeter wählen
2. Zu suchendes Zeichen mit Backslash maskieren

Grüße

TobiaZ 29-09-2008 17:15

Da das Forum die \ schon mal gerne verschluckt, weiß ich natürlich nicht ob das Absicht ist, was du da machst...

ABER, wenn du vernünftig escapest, dann klappt das auch!

TobiaZ 29-09-2008 17:17

Zitat:

Original geschrieben von Griecherus
Da das zu suchende Zeichen und die Delimeter identisch sind[...]
Ähm, wie bitte? :goth:

Griecherus 29-09-2008 17:24

Zitat:

Original geschrieben von TobiaZ
Ähm, wie bitte? :goth:
Wo habe ich nur wieder meinen Kopf :dontknow:
Ich meinte natürlich: Da der Backslash ein Maskierungszeichen ist, muss er selbst maskiert werden, um als "normales" Zeichen gewertet zu werden ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG