3 Stimmen

PHP - preg_match?

Ich bin nicht sehr gut mit Ausdrücken... Ich habe mir einige Online-Tutorials angesehen, aber ich verstehe es immer noch nicht. Im Grunde versuche ich, Folgendes zurückzugeben TRUE wenn eine Zeichenkette wie folgt formatiert ist:

4 Ziffern + Leerzeichen + 2 Ziffern und konvertiert sie in ein Datum.

Die Zeichenkette wird also wie folgt aussehen: 2010 02 und ich versuche, Folgendes auszugeben February, 2010 .

Ich versuche, die preg_match aber ich bekomme immer wieder

{ ist kein Modifikator...

EDITAR

Nach den ersten 2 Antworten habe ich es geändert, aber ich erhalte einen fatalen Fehler bei der ersten und den gleichen unbekannten Modifikator-Fehler bei der zweiten:

if (preg_match('/([0-9{4}]) ([0-9]{2})/iU', $path_part)) {
    $path_title = date("F, Y",strtotime(str_replace(" ", "-", $path_title)));
}

Außerdem habe ich gerade die detailliertere Version in der ersten Antwort ausprobiert, und obwohl der Fehler verschwindet, ändert sich die Ausgabe nicht:

$path_part = '2010 02';
if (preg_match('/^(\d{4}) (\d{2})$/', $path_part, $matches)) {
    $path_title = $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}

3voto

codaddict Punkte 426877

Ich versuche, TRUE zurückzugeben, wenn eine Zeichenfolge wie folgt formatiert ist: 4 Ziffern + Leerzeichen + 2 Ziffern

return preg_match(/^\d{4} \d{2}$/,$input);

Um in ein Datum umzuwandeln, können Sie etwas wie folgt versuchen:

$mon = array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$date_str = "2010 02";

if(preg_match('/^(\d{4}) (\d{2})$/',$date_str,$matches))
{
        print $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}

1voto

bmb Punkte 5728
$in = "2010 02";
if(preg_match('/([0-9]{4}) ([0-9]{2})/i', $in, $matches)) {
        echo date("F Y", strtotime($matches[2] . "/1/" . $matches[1]));
}

0voto

rATRIJS Punkte 199

Versuchen Sie das hier...

preg_match('/([0-9{4}]) ([0-9]{2})/iU', $input);

0voto

Stephen Cross Punkte 973

Ohne Einzelheiten zu Ihrem tatsächlichen Code zu kennen, sollte das Folgende funktionieren:

<?php

$str = '2010 02';

$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

if(preg_match('/([0-9]{4}) ([0-9]{2})/', $str, $match) == 1){
    $year = $match[1];
    $month = (int) $match[2];
    echo $months[$month - 1] . ', ' . $year;
}else{
    //Error...
}

?>

0voto

Danon Punkte 2170

Sie können auch Folgendes verwenden T-Regx Bibliothek

$string = '2010 02';

pattern('\d{4} \d{2}')->match($string)->first(function (Match $match) 
{
    $year = $match->group(1);
    $month = $match->group(2);
});

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