2015-11-25 2 views
0

У меня есть строка, как этотКак выбрать часть строки (После = специальный символ)

man=teabaran=marcomword=1&rolw=sunglassess 

или

tina=gdjf==5=?hdhfg=oliver-people 

и мне нужно, чтобы захватить только строку после последней =. Затем $result будет sunglassess или oliver-people.

Не могли бы вы сообщить мне, какую функцию в PHP я могу использовать для этого?

+0

Либо [взрываются] (http://php.net/manual/en/function.explode.php) или используйте [preg_match] (http://php.net/manual/en/function.preg-match.php) с регулярным выражением. –

+0

из руководства: '// получить последний каталог в $ PATH $ dir = substr (strrchr ($ PATH,": "), 1);' – dev0

ответ

1

Если это всегда после последнего уравнения знака (=), то вы можете просто взорвать его и взять последнюю часть:

$str = 'man=teabaran=marcomword=1&rolw=sunglassess'; 
$arr = explode('=', $str); 
$result = $arr[count($arr)-1]; 
echo "Last element: " . $result; // sunglasses 

Регулярное выражение устраивало бы вас, а также (хотя это кажется немного, как излишество, не зная, какие струны/URLs вы должны в первую очередь):

$str = 'man=teabaran=marcomword=1&rolw=sunglassess'; 
$regex = '/rolw=([^&=]*)/i'; 
// that this, take every character except &= unlimited times and capture them 
preg_match_all($regex, $str, $matches); 
print_r($matches); 
1

Использование end функции для продвижения указателя массива на последний элемент

$str = 'man=teabaran=marcomword=1&rolw=sunglassess'; 

$array = explode('=',$str); 

$last = end($array); 

print $last; 
/* will output 
sunglasses 
*/ 

то же самое для второй строки, все в один присест

$str = 'tina=gdjf==5=?hdhfg=oliver-people'; 

$last = end(explode('=',$str)); 

print $last; 
/* will output 
oliver-people 
*/ 
2

Это может быть сделано без взрыва, и в 1 строке кода, например, так:

$string = "man=teabaran=marcomword=1&rolw=sunglassess"; 

$last = substr($string, strrpos($string, '=') + 1); 

echo $last;