una recorrer parte length extraer eliminar dividir caracteres caracter cadena buscar php sql substr

recorrer - Extrae una subcadena entre dos caracteres en una cadena PHP



recorrer string php (10)

Prueba la expresión regular

$String =" [modid=256]"; $result=preg_match_all(''/(?<=(=))(/d+)/'',$String,$matches); print_r($matches[0]);

Salida

Matriz ([0] => 256)

DEMO

Explicación Aquí se usa la mirada positiva detrás (? <=) En la expresión regular, por ej. (? <= Foo) la barra coincide con la barra cuando está precedido por foo, aquí (? <= (=)) (/ D +) hacemos coincidir el (/ d + ) justo después del signo ''=''. / d Coincide con cualquier carácter de dígito (0-9). + Coincide con 1 o más de los token precedentes

¿Hay una función php que pueda extraer una frase entre 2 caracteres diferentes en una cadena? Algo así como substr ();

Ejemplo:

$String = [modid=256]; $First = "="; $Second = "]"; $id = substr($string, $First, $Second);

Por lo tanto, $id sería 256

Cualquier ayuda sería apreciada :)


Puede usar una expresión regular o puede intentar esto:

$String = "[modid=256]"; $First = "="; $Second = "]"; $posFirst = strpos($String, $First); //Only return first match $posSecond = strpos($String, $Second); //Only return first match if($posFirst !== false && $posSecond !== false && $posFirst < $posSecond){ $id = substr($string, $First, $Second); }else{ //Not match $First or $Second }

Deberías leer sobre substr. La mejor manera para esto es una expresión regular.


Puedes usar una expresión regular:

<?php $string = "[modid=256][modid=345]"; preg_match_all("//[modid=([0-9]+)/]/", $string, $matches); $modids = $matches[1]; foreach( $modids as $modid ) echo "$modid/n";

http://eval.in/9913


Regular Expression es tu amigo.

preg_match("/=(/d+)/]/", $String, $matches); var_dump($matches);

Esto coincidirá con cualquier número, para otros valores tendrá que adaptarlo.


Si no desea usar la expresión obligatoria, use las funciones strstr , trim y strrev :

// Require PHP 5.3 and higher $id = trim(strstr(strstr($String, ''=''), '']'', true), ''=]''); // Any PHP version $id = trim(strrev(strstr(strrev((strstr($String, ''=''))), '']'')), ''=]'');


Utilizar:

<?php $str = "[modid=256]"; $from = "="; $to = "]"; echo getStringBetween($str,$from,$to); function getStringBetween($str,$from,$to) { $sub = substr($str, strpos($str,$from)+strlen($from),strlen($str)); return substr($sub,0,strpos($sub,$to)); } ?>



(movido de comentario porque el formateo es más fácil aquí)

podría ser un enfoque perezoso, pero en tales casos usualmente explotaría mi cadena de esta manera:

$string_array = explode("=",$String);

y en un segundo paso me desharía de eso "]" quizás a través de rtrim:

$id = rtrim($string_array[1], "]");

... pero esto solo funcionará si la estructura es siempre la misma ...

-aclamaciones-

ps: ¿no debería ser realmente $ String = "[modid = 256]"; ?


$String = "[modid=256]"; $First = "="; $Second = "]"; $Firstpos=strpos($String, $First); $Secondpos=strpos($String, $Second); $id = substr($String , $Firstpos, $Secondpos);


$str = "[modid=256]"; preg_match(''//[modid=(?P<modId>/d+)/]/'', $str, $matches); echo $matches[''modId''];