4 Stimmen

Regex zum Suchen und Ersetzen von Strings mit Anfangs- und Endtext in PHP

Ich möchte eine PHP-Funktion wahrscheinlich regulären Ausdruck zu finden und ersetzen eine Zeichenfolge, die mit einer konstanten Zeichenfolge beginnt und endet mit einer bestimmten Zeichenfolge und den Text innerhalb dieser Zeichenfolgen erwähnt z.B.,

[Starting String]..anything.. [Ending String]

und ich möchte das obige Muster der Zeichenkette mit Leerzeichen entfernen. Bitte um Rat!!

14voto

Cheery Punkte 15669
$str = preg_replace('/' . preg_quote('[Starting String]') . 
                          '.*?' .
                          preg_quote('[Ending String]') . '/', '', $str);

preg_quote wird verwendet, um sicher zu gehen, dass Sie den Regexp nicht mit einigen spezifischen Regexp-Zeichen in Ihren 'Starting'- und 'Ending'-Strings brechen, wie []

Für $str = ' blah blah [Starting String] something [Ending String] blah blah'; würde das Ergebnis lauten blah blah blah blah

1voto

jmkelm08 Punkte 659

Ich glaube, Sie wollen preg_replace verwenden. Ich habe es nicht getestet, aber etwas in der Art von:

$str = "Starting String foo bar Ending String"
$pattern = '/^Starting String(.+)Ending String$/'
$replacement = ''
$result = preg_replace($pattern, $replacement, $str);

Sie müssen sicherstellen, dass Start- und Endzeichenfolge keine speziellen Regex-Zeichen enthalten oder dass sie richtig escaped sind.

1voto

J. Bruni Punkte 19752
define('STARTING', 'starting string');

$ending = 'ending string';
$string = 'starting stringSomething Hereending string';

function get_anything($string, $ending, &$anything)
{
    if (strpos($string, STARTING) !== 0)
    {
        return false;
    }
    if (substr($string, strlen($ending) * -1) != $ending)
    {
        return false;
    }
    $anything = substr($string, strlen(STARTING));
    $anything = substr_replace($anything, '', strlen($ending) * -1, -1);
    return true;
}

if (get_anything($string, $ending, $anything))
{
    echo $anything;
}

Die Funktion get_anything wird zurückgegeben false wenn das Muster nicht gefunden wird, und true wenn sie gefunden wird. Das "irgendetwas" in der Mitte wird im dritten Parameter zurückgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X