PHP在两个字符串之间获取字符串
所以我有一个由不同字符串组成的文件。例如:PHP在两个字符串之间获取字符串,php,Php,所以我有一个由不同字符串组成的文件。例如: $ADDR:1234 This Address;$NAME:Mike Steve,$NAME:Julia Steve;$IP:139.0.0.35 现在的问题是它不是由一个东西来分隔的,它是由一个,和一个来分隔的
$ADDR:1234 This Address;$NAME:Mike Steve,$NAME:Julia Steve;$IP:139.0.0.35
现在的问题是它不是由一个东西来分隔的,它是由一个,
和一个来分隔的不是每个,
都意味着它是一个新字段(我知道这是可怕的数据)
它唯一真正被分隔的是,每个字段都以$
开头
我需要能够将每个字段(从$
到下一个$
)存储到一个变量中
我试过substr
,但似乎都不正确
非常感谢您的帮助!提前谢谢你 使用php中的explode函数:
$arr = explode("$",$string);
在$arr中,您将拥有一个字符串数组,每个字符串都是字符串的子字符串,通过在由$sign形成的边界上拆分它而形成
更多信息如果这是一个包含多行的大文件的一部分,则可以将每个变量设置为数组中的一项。
这将便于以后访问这些值
$str = '$ADDR:1234 This Address;$NAME:Mike Steve,$NAME:Julia Steve;$IP:139.0.0.35
$ADDR:3456 This Address;$NAME:Steve,$NAME:Julia;$IP:139.0.0.36
$ADDR:7890 This Address;$NAME:Mike,$NAME:Julia Steve;$IP:139.0.0.37';
Preg_match_all("/[$](\w+):(.*?)[\n|,|;]/", $str ."\n" , $m);
$i =-1;
Foreach($m[1] as $key => $val){
If($val == 'ADDR') $i++; // replace '$ADDR' with what is first item on each line.
$arr[$i][$val][] = $m[2][$key];
}
Var_dump($arr);
使用“$”字符或带有g
标志的正则表达式进行分解。preg\u match\u all((\$(?\w+):(?*???)(=[;,]\$\124$),$input,$matches)代码>应该可以做到这一点。如果它是可解析的,那么您需要正确定义语法。如果无法定义语法,则无法对其进行解析。根据你的描述,你还没有定义语法。这些变量有几行吗?