regex en php falla [cerrado]

Estoy tratando de obtener esto de un archivo:

BEGIN_SEREFERRALS 2 google 13 15 search 2 2 END_SEREFERRALS

Yo uso esta función:

     function getTextBetweenSEO($file)
{
    $pattern = "/BEGIN_SEREFERRALS\s(.*)\sEND_SEREFERRALS/i";
    preg_match_all($pattern, $file, $matches);
    print_r($matches);
    exit();
    return $matches[1];

}

Lo que tengo impreso es esto:

Array ( [0] => Array ( ) [1] => Array ( ) )

¿Por qué falla la expresión regular?

preguntado el 12 de junio de 12 a las 10:06

Debe ser otra cosa porque lo que tienes simplemente funciona -

1 Respuestas

Puedes probar con esta expresión regular:

$patrón = "^BEGIN_SEREFERRALS(.*)END_SEREFERRALS^";

Array
(
    [0] => Array
        (
            [0] => BEGIN_SEREFERRALS 2 google 13 15 search 2 2 END_SEREFERRALS
        )

    [1] => Array
        (
            [0] =>  2 google 13 15 search 2 2 
        )
)

FIX Para patrón en datos de texto de blob:

$patrón = "/BEGIN_SEREFERRALS(.*)END_SEREFERRALS/";

getTextBetweenSEO("jsdfhksdjhskjfdsjfhsdkjfhBEGIN_SEREFERRALS 2 google 13 15 search 2 2 END_SEREFERRALSjklajdakldjaslkdjakldjalkdjalksdj")

Array
(
    [0] => Array
        (
            [0] => BEGIN_SEREFERRALS 2 google 13 15 search 2 2 END_SEREFERRALS
        )

    [1] => Array
        (
            [0] =>  2 google 13 15 search 2 2 
        )
)

Respondido el 12 de junio de 12 a las 10:06

no funcionó :(............. ¿por qué necesito thouse ^^??!? La cadena Begin... está dentro del texto... así que no creo que ^ sea relevante - Dmitri Makovetskiyd

por supuesto, puede eliminar ^^ si el patrón está en datos de texto globales. este funciona bien: $patrón = "/BEGIN_SEREFERRALS(.*)END_SEREFERRALS/"; - 0xBAADF00D

he editado mi respuesta. - 0xBAADF00D

Ya lo intenté, y no funcionó por alguna razón... Tomé un fragmento de código que encuentra las posiciones final e inicial entre dos cadenas... No tengo idea de por qué no funcionó... pero supongo que si lo probaste en tu ejemplo , funciona - Dmitri Makovetskiyd

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.