There are several ways.
What I would prefer, for being more practical (= P):
Use explode
, which breaks the string where it determines.
<?php
$texto = 'lang[en-US].php';
// Seu $texto
$texto = explode('[', $texto);
// $texto agora possui: [0] => 'lang', [1] => en-US].php
$texto = explode(']', $texto[1]);
// $texto agora possui [0] => en-US, [1] => .php
echo $texto[0];
// Resultado: en-US
STRISTR: I want something with fewer rows!
You can use stristr
, which has a function similar to explode
, together with str_replace
.
$texto = 'lang[en-US].php';
$cortado = stristr(stristr($texto, '['), ']', true);
// Escolha um para remover os [:
$texto = str_replace('[', '', $cortado);
// OU
$texto = substr($cortado, 1);
REGEX: I want to use REGEX
Because REGEX is the three rule of programming.
$texto = 'lang[en-US].php';
preg_match('/\[(.*?)\]/', $texto, $cortado);
// Escolha um para remover os []:
$texto = str_replace('[', '', str_replace(']', '', $cortado[0]));
// OU
$texto = substr($cortado[0], 1, -1);
//OU
$texto = $cortado[1];
Note:
The str_replace
can be changed by substr
.