2015-07-21 105 views
2

这是我的字符串:PHP:如何从字符串中获取特定单词

$string="VARHELLO=helloVARWELCOME=123qwa";

我想从字符串中获得'hello'和'123qwa'。

我的伪代码是。

 
if /^VARHELLO/ exist 
    get hello(or whatever comes after VARHELLO and before VARWELCOME) 
if /^VARWELCOME/ exist 
    get 123qwa(or whatever comes after VARWELCOME) 

注意:从 'VARHELLO' 和 'VARWELCOME' 值是动态的,所以 'VARHELLO' 可能是 'H3Ll0' 或VARWELCOME可能是 'W3l60m3'。

Example: 
$string="VARHELLO=H3Ll0VARWELCOME=W3l60m3";
+0

看看PHP的[parse_str()](HTTP://www.php。 net/manual/en/function.parse-str.php)函数 –

+0

为什么不用像“VARHELLO = H3Ll0&VARWELCOME = W3l60m3”这样的分隔符分割然后爆炸成一个数组? –

+0

好的如果分隔符是空格? –

回答

4

这里有一些代码将把这个字符串解析为一个更有用的数组。

<?php 
$string="VARHELLO=helloVARWELCOME=123qwa"; 
$parsed = []; 
$parts = explode('VAR', $string); 

foreach($parts AS $part){ 
    if(strlen($part)){ 
     $subParts = explode('=', $part); 
     $parsed[$subParts[0]] = $subParts[1]; 
    } 

} 

var_dump($parsed); 

输出:

array(2) { 
    ["HELLO"]=> 
    string(5) "hello" 
    ["WELCOME"]=> 
    string(6) "123qwa" 
} 

或者使用替代parse_strhttp://php.net/manual/en/function.parse-str.php

<?php 
$string="VARHELLO=helloVARWELCOME=123qwa"; 
$string = str_replace('VAR', '&', $string); 

var_dump($string); 
parse_str($string); 

var_dump($HELLO); 
var_dump($WELCOME); 

输出:

string(27) "&HELLO=hello&WELCOME=123qwa" 
string(5) "hello" 
string(6) "123qwa" 
+0

谢谢。你节省了我的时间。 –

+0

不客气:) – Jessica

+1

我建议不要使用parse_str(),因为它会污染范围,并可能引入安全问题:'“VAR&_GET = ...”' –

2

杰西卡的答案是完美的,但如果你想使用preg_match

$string="VARHELLO=helloVARWELCOME=123qwa"; 

preg_match('/VARHELLO=(.*?)VARWELCOME=(.*)/is', $string, $m); 

var_dump($m); 

得到它的结果将是$m[1]$m[2]

array(3) { 
    [0]=> 
    string(31) "VARHELLO=helloVARWELCOME=123qwa" 
    [1]=> 
    string(5) "hello" 
    [2]=> 
    string(6) "123qwa" 

}

+0

谢谢先生。 :) –

+0

@KuhaCoAkawntMo:不客气。 – Mubin

相关问题