ZMIENIONO

Szukałem w Google, aby napisać niestandardowe wyrażenie regularne dla mojej aplikacji internetowej i nadal nie mogę uzyskać tego, czego chciałem.

Chcę sprawdzić, czy ciąg spełnia ten wzorzec, czy nie:

*STRING*STRING INCLUDING ALL CHARS*STRING INCLUDING ALL CHARS#

Na przykład:

*STRING*the first string تست یک*the second string تست دو#

Powinien zwrócić TRUE

*sdsdsd*the first string تست یکthe second string تست دو#

Powinien zwrócić FALSE(ponieważ nie jest to wzorzec jako *STRING*STRING*STRING#)

$check = preg_match("THE RULE", $STRING);

Proszę o ZASADĘ tutaj, przepraszam, jeśli zadałem pytanie w zły sposób...

0
behz4d 24 wrzesień 2012, 14:54

2 odpowiedzi

Najlepsza odpowiedź

Aby sprawdzić, czy ciąg ma ten wzorzec, czy nie: *STRING*STRING*STRING#:

if (preg_match(
    '/^       # Start of string
    \*        # Match *
    ([^*]*)   # Match any number of characters except *
    \*        # Match *
    ([^*]*)   # Match any number of characters except *
    \*        # Match *
    ([^#]*)   # Match any number of characters except #
    \#        # Match #
    $         # End of string/x', 
    $subject, $matches))

Następnie użyj

filter_var($matches[1], FILTER_VALIDATE_EMAIL)

Aby sprawdzić, czy pierwsza grupa może zawierać adres e-mail.

1
Tim Pietzcker 24 wrzesień 2012, 15:06

Nie potrzebujesz wyrażenia regularnego, użyj filter_var():

function checkEmail($str){
    $exp = explode('*', $str);
    if(filter_var($exp[1], FILTER_VALIDATE_EMAIL) && $exp[2] && $exp[3] && substr($str, strlen($str)-1, strlen($str)) == '#') {
        return true;
    }
    return false;
}

$valid = checkEmail('*example@example.com*the first string تست یک*the second string تست دو#');
2
Mihai Iorga 24 wrzesień 2012, 15:07