【问题标题】:PHP: How to get specific word from stringPHP:如何从字符串中获取特定的单词
【发布时间】:2015-07-21 13:44:04
【问题描述】:

这是我的字符串:

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

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

我的伪代码是。

如果 /^VARHELLO/ 存在 打个招呼(或在 VARHELLO 之后和 VARWELCOME 之前出现的任何内容) 如果 /^VARWELCOME/ 存在 获得 123qwa(或 VARWELCOME 之后的任何内容)

注意:来自 'VARHELLO' 和 'VARWELCOME' 的值是动态的,因此 'VARHELLO' 可能是 'H3Ll0' 或 VARWELCOME 可能是 'W3l60m3'。

示例:
$string="VARHELLO=H3Ll0VARWELCOME=W3l60m3";

【问题讨论】:

  • 看PHP的parse_str()函数
  • 为什么不用像“VARHELLO=H3Ll0&VARWELCOME=W3l60m3”这样的分隔符拆分然后分解成一个数组?
  • 好的,如果分隔符是空格呢?
  • @bub - 分隔符是 VAR 部分。
  • 我已经尝试了分隔符 '&' 并使用了 'parse_str()',它可以工作,但这是给定的问题。

标签: php arrays string


【解决方案1】:

这里有一些代码可以为你解析这个字符串到一个更有用的数组中。

<?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_str (http://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"

【讨论】:

  • 谢谢。你节省了我的时间。
  • 我建议不要使用 parse_str() 因为它会污染范围,并且可能会引入安全问题:"VAR&amp;_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"

}

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多