Frage

Ich habe einen Text, so etwas wie folgt aus:

Paragraphs of text
(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)
Some additional paragraphs of text

Was ich will, ist die Unbekannt Text zu halten , aber loszuwerden, die ( einige bekannte TEXT) und (Ein anderer Teil Known Text) .

Ich denke, die preg_replace wird mir geben, was ich will, aber ich brauche den regulären Ausdruck dieses zu ersetzen:

(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)

Mit diesem ..

Unknown Text

Ich sehe das preg_replace nimmt 3 Parameter, die regex , Ersatztext und Thema .

Gibt es eine Möglichkeit, den Wert von unbekanntem Text zu dem Ersetzungstext Parameter zu übergeben, OR, eine Möglichkeit, die links und rechts Stücke reaplce (einige bekannte TEXT) und (Ein anderen Teil KNOW TEXT) , ohne den unbekannten Text entfernen? Alternativ gibt es ein str_replace () Lösung dieses Problems?

Danke

--- UPDATE ---

Die (anderen bekannten TEXT) Stück kann in dem Text in anderen Orten existieren, aber ich will sie nicht entfernt, wenn sie das Muster der folgt (einige bekannte TEXT) Unbekannt Text (EINIGE ANDERE Known Text) . Ich bin die ersten str_replace Vorschläge denken würde nicht funktionieren, weil dieser.

War es hilfreich?

Lösung

Was sind die Voraussetzungen? Wenn Sie:

  

(Ein anderer Teil Known Text) Unbekannter Text (einige bekannte TEXT)

(d. Wenn der Belichtungsreihe Text wird getauscht), noch tun Sie es entfernen? Muss der bekannte Text immer am Anfang oder Ende der Zeile sein? Wenn die Antwort ja auf eine dieser ist, sind Sie wahrscheinlich besser dran, einen regulären Ausdruck verwenden. So etwas wie folgt aus:

$new_text = preg_replace('/^\(SOME KNOWN TEXT\)(.+)\(SOME OTHER KNOWN TEXT\)$/m, '$1', $text);

Die Schrägstriche (\) sind die ( und ) Zeichen zu entkommen, die eine besondere Bedeutung in regulären Ausdrücken haben. Ich gehe davon aus, dass Sie den Inhalt ändern, werden Sie wollen - Sie können sie an diesem Punkt entfernen

.

In diesem regex, die . ist ein Sonder Operator Bedeutung „ein beliebiges Zeichen.“ Es wird jedes Zeichen. Die + bedeutet „ein oder mehrere“ und ist ein Modifikator auf dem vorhergehenden Operator - zusammen, können diese als matching „eine oder mehr von einem beliebigen Zeichen“ interpretiert werden. Die ( und ) Zeichen werden für die Erfassung Abschnitte des Textes in einem Unter-Pattern . Durch umfassen die .+ in Klammern, erfassen wir dies in dem Ersatz verwendet werden. Der erste Abschnitt von ( und ) umgeben ist $1 durch die Regex-Engine bezeichnet. Hätten wir mehr, würden sie beschriftet $2, $3 werden, und so weiter.

Wenn beides nicht anwenden, können Sie die str_replace Funktion verwenden, wie in den anderen Antworten erwähnt.

Andere Tipps

Sie könnten einfach str_replace mit einer Reihe von den Saiten bieten Ihnen als solche entfernen möchten:

$destString = str_replace(array('TEXT A', 'TEXT B'), '', $sourceString);

Wenn Sie benötigen kein kluges Pattern-Matching, das wird eine schnellere Lösung als regex sein.

Wenn die beiden wirklich Texte bekannt sind, können Sie dies tun:

$result = str_replace(array('(SOME KNOWN TEXT)', '(SOME OTHER KNOWN TEXT)'), '', '(SOME KNOWN TEXT)Unknown Text(SOME OTHER KNOWN TEXT)');

, die eine bessere Leistung als ein regulärer Ausdruck ist. Das erste Argument der Satz Schlüssel zu ersetzen, das zweite Argument ist, was es zu ersetzen, und das dritte ist das Thema.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top