PHP:如何从字符串中获取特定单词

时间:2015-07-21 13:44:04

标签: php arrays string

这是我的字符串:

$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";

2 个答案:

答案 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"

答案 1 :(得分: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"

}