任何人都可以看看我写的PHP代码。我想将三个信息提取到一个数组中,但它对我不起作用。
$string = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105"
$var = preg_split("/^<.*<$/" , $string);
谢谢,
答案 0 :(得分:3)
$string = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105";
preg_match_all('/<([^>]*)>([^<]+)/' , $string, $matches);
var_dump($matches);
给出:
array(3) {
[0] => array(3) {
[0] => string(14) "Joh Doe "
[1] => string(25) "joh.doe@gmail.com "
[2] => string(15) " 130105"
}
[1] => array(3) {
[0] => string(4) "Name"
[1] => string(5) "Email"
[2] => string(6) "App ID"
}
[2] => array(3) {
[0] => string(8) "Joh Doe "
[1] => string(18) "joh.doe@gmail.com "
[2] => string(7) " 130105"
}
}
答案 1 :(得分:2)
不要将正则表达式锚定在拆分中,正则表达式也不会以<
而是>
结束。
$str = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105";
$arr = preg_split("/<[^>]+>/" , $str);
print_r($arr);
<强>输出:强>
Array
(
[0] =>
[1] => Joh Doe
[2] => joh.doe@gmail.com
[3] => 130105
)
答案 2 :(得分:2)
您可以使用:
$string = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105";
preg_match_all('/>\s*([^<]+)/', $string, $var);
print_r($var[1]);
输出:
Array
(
[0] => Joh Doe
[1] => joh.doe@gmail.com
[2] => 130105
)
答案 3 :(得分:1)
您缺少导致以下内容的分隔符:
Warning: preg_split() [function.preg-split]: No ending delimiter
这是你应该拥有的:
$string = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105";
$var = preg_split("#^<.*<$#" , $string);
print_r($var);
<强>结果:强>
Array
(
[0] => Joh Doe joh.doe@gmail.com 130105
)
答案 4 :(得分:1)
试试这个
$string = "<Name>Joh Doe <Email>joh.doe@gmail.com <App ID> 130105";
$var = preg_split("#\s*<.*?>\s*#" , $string);
print_r($var);
输出:
数组([0] =&gt; [1] =&gt; Joh Doe [2] =&gt; joh.doe@gmail.com [3] =&gt; 130105)
第一个索引为空,因为第一个标记之前没有任何内容。
<强>更新强>
根据JRL的建议
$var = preg_split("#\s*<.*?>\s*#" , $string, -1, PREG_SPLIT_NO_EMPTY);
输出:
数组([0] =&gt; Joh Doe [1] =&gt; joh.doe@gmail.com [2] =&gt; 130105)