Antworten auf deine Fragen:
Neues Thema erstellen

RegEx alle Wörter löschen in denen...

LowkaZ

Half Life

Hallo zusammen,

RegEx ist meine größte Schwäche von daher kann mir jmd helfen

Ich hab ne ziemlich Große DB in der die manche Sonderzeichen verhauen waren.
Ich habe diese nun alle korrigiert möchte dies aber nochmal nachkontrollieren.

Jetzt wollte ich mir eine Liste aller dieser Wörter ausgeben lassen.

hier ist mein Ansatz

Code:
$text = preg_replace('&^[a-záàéèíìóòúù]*[áàéèíìóòúù]+[a-záàéèíìóòúù]*&Ui', '', $dbtext);

Mein RegEx ist bestimmt lächerlich, ich hab das einfach nicht drauf...
 

G

Gelöschtes Mitglied 290216

Guest

AW: RegEx alle Wörter löschen in denen...

wenn sonderzeichen verhauen sind, liegt das an der Textkodierung (UTF-8 gegen ISO)

Spiel mal einwenig mit utf8_decode($string) und utf8_encode($string) herrum.
Dann kontroliere noch die HTML Meta Tags.

Muss gestehen die RegEx sind auhc meine Schwäche. Willst du die in PHP anwenden, oder direkt in MySQL?
 

LowkaZ

Half Life

AW: RegEx alle Wörter löschen in denen...

Nein die Zeichen sind in der DB zerschossen, in der Ausgabe hätte ich damit kein Problem...
 
G

Gelöschtes Mitglied 290216

Guest

AW: RegEx alle Wörter löschen in denen...

Habs nicht ausprobiert, und regex ist wie gesagt auch meine schwäche.

Code:
// Hier unser Pattern
$patt = '/[áàâéèêíìîóòôúùûäöüßµ]+/i';
 
// Erstmal auflisten, wo überhaupt Sonderzeichen noch drin stehen
if(preg_match($patt,$dbtext)>0) {
    // Ein eintrag wurde gefunden, nun auflisten:
    echo "<hr/>".$dbtext;
}
 
// -------------------------------------------------------------
// Nun wollen wir SOnderzeichen entfernen
// ich gebe mal von aus, das $a = fetch_assoc Result ist
// Entferne alle Sonderzeichen im komplettem Array (Array ist auch als string verwendbar)
$a = preg_replace($patt,'',$a);
 
Zuletzt bearbeitet von einem Moderator:

saila

Moderatorle

AW: RegEx alle Wörter löschen in denen...

Hi,

in einer Datenbank werden keine Sonderzeichen zerschossen. Sie werden nach dem jeweils eingestellten charset entsprechend formatiert dargestellt. Ergo ist entweder bei einem Datenimport was mächtig im Vorfeld versäumt worden oder die Daten gehen aus utf-8 in z.B. schwedish (was ich schon oft gesehen habe).

Wenn also solche Sonderzeichen vorhanden sind, ist im Normalfall erst zu prüfen, was sie letztlich darstellen. Wenn es Textbestandteile sind, können diese wieder geklärt werden - sofern man den charset herausfindet. Wenn nicht - löschen.

Wenn also replace, dann ist neben preg_replace str_replace zu empfehlen. Ist noch mal schneller als preg_replace und erfordert bei vielen Stringdurchläufen wenig performance gegenüber preg_replace.

Abgesehen davon benötigt man kein preg_match! preg_replace oder str_replace wird nur bei einem Treffer angewendet. Ansonsten eben nicht und somit muss man im Vorfeld auch nicht auf Sonderzeichen prüfen, zumal man diese auch letztlich in ein Array setzen kann um den entsprechenden Ersatz für das jeweilige Sonderzeichen zu setzen.
 

LowkaZ

Half Life

AW: RegEx alle Wörter löschen in denen...

Die DB wurde falsch eingespielt, und es wurden nur gewisse Sonderzeichen zerschossen, warum auch immer. Die Datensätze wurden auch bearbeitet usw.. ist egal...

mir gehts nur darum die Wörter mit diesen áàéèíìóòúù Zeichen auszugeben. Damit ich die Wörter kontrollieren kann dass Sie richtig eingebaut wurden. Dient lediglich zur Kontrolle.
 

saila

Moderatorle

AW: RegEx alle Wörter löschen in denen...

Hi,

dazu musst du herausfinden, was die Wörter zuvor für ein charset hatten und das aktuelle.

Dann kannst du die Sonderzeichen/-Buchstaben auch entsprechend zuordnen und wie folgt ändern:

PHP:
<?php
/* preg für jeweiliges Zeichen */
$preg = array('á', 'è', 'ó'); // usw..
$repl  = array('a', 'e', 'ö'); // lediglich als Beispielersatz usw..

/* normal verwendete Variante */
$str = preg_replace($preg, $repl, $datensatz_aus_db);
/* schnelle Alternativ-Variante für kurze Strings */
$str = str_replace($preg, $repl, $datensatz_aus_db);

echo $str;
?>
Wenn du genau den charset vor und nach hast, kann man auch ein Script über die DB laufen lassen, welche alle Datensätze
entsprechend ändert.

Wenn das alles zu Aufwendig ist/wird, kann man auch für die Ausgabe einen anderen charset setzen!
Edit:
hier noch den Link http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_charset
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 290216

Guest

AW: RegEx alle Wörter löschen in denen...

DIe Frage war nicht nur das ersetzen, sondern er wollte eine Textauflistung haben wo alle Sätze eingeblendet werden, die ein Sonderzeichen enthalten. Aus diesem Grund ist ein preg_match durchaus sinnvoll.

Er will die ja nicht ersetzen, sondern auflisten... str_replace und preg_replace ersetzen aber lediglich, wärend preg_match guckt, ob der RegEx zutrifft oder nicht, also das was er benötigt.
 

saila

Moderatorle

AW: RegEx alle Wörter löschen in denen...

DIe Frage war nicht nur das ersetzen, sondern er wollte eine Textauflistung haben wo alle Sätze eingeblendet werden, die ein Sonderzeichen enthalten. Aus diesem Grund ist ein preg_match durchaus sinnvoll.

Er will die ja nicht ersetzen, sondern auflisten... str_replace und preg_replace ersetzen aber lediglich, wärend preg_match guckt, ob der RegEx zutrifft oder nicht, also das was er benötigt.

Naja - wenn es um die Ausgabe geht wie Eingangs erwähnt, setze ich den Query an und lass mir alle Inhalte die ein Sonderzeichen beinhalten ausgeben und schleif diese durch ein preg_match.

Hier wäre ein Ansatz dafür:

Der Ansatz von preg_replace oder str_replace war auf den möglichen Vorgang bezogen, diese DB-Inhalte per UPDATE zu korrigieren.
 

Haetti

Nicht mehr ganz neu hier

AW: RegEx alle Wörter löschen in denen...

ich komme nochmals auf Regex zurück (ob du es nun einsetzen willst oder nicht).

Soweit ich weiss, müsste einfach nur '[áàéèíìóòúù]+' reichen, um nach den Sonderzeichen zu suchen (ist natürlich beliebig erweiterbar).

Eine gute Einführung in Regex findest du auf Wikipedia: Regulärer Ausdruck ? Wikipedia
Von da hab ich meine Idee. Ist beim Kapitel Quantoren als Beispiel unter der Tabelle mit '[ab]+'
 
G

Gelöschtes Mitglied 290216

Guest

AW: RegEx alle Wörter löschen in denen...

Nehm noch die i Modifizierung dazu, das Groß/Kleinschreibung ignoriert wird, und dann hast das gleiche wie ich ;)
$patt = '/[áàâéèêíìîóòôúùûäöüßµ]+/i';
 

LowkaZ

Half Life

AW: RegEx alle Wörter löschen in denen...

Ich konnte nicht einfach ersetzen weil á und è mit dem gleichen Zeichen ersetzt wurden (Kasten mit Fragezeichen) ist ja auch egal

Die ganzen Inhalte liegen in einem Feld post_content
ich will auch nicht die ganzen Sätze oder Felder, sondern nur die einzelnen Wörter.
Dies dient nur als Korrektur lesen, meine italienisch ist leider nicht das beste.
 

saila

Moderatorle

AW: RegEx alle Wörter löschen in denen...

Ich konnte nicht einfach ersetzen weil á und è mit dem gleichen Zeichen ersetzt wurden (Kasten mit Fragezeichen) ist ja auch egal

Die ganzen Inhalte liegen in einem Feld post_content
ich will auch nicht die ganzen Sätze oder Felder, sondern nur die einzelnen Wörter.
Dies dient nur als Korrektur lesen, meine italienisch ist leider nicht das beste.

Hi,

ich bin aktuell unterwegs. Es gibt mehrere Möglichkeiten herauszufinden, welcher Zeichensatz letztlich 'zuvor' verwendet wurde. Ebenso gibt es auch mehere Möglichkeiten eine Ausgabe zu erziehlen, welche keine Fragezeichen oder irgendwelche Quadrate beinhaltet, was letztlich wiederum der meta-charset im head deiner Seite verursacht. Am Wochenende bin ich auch wieder per Sk erreichbar.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben