我不确定如何做到这一点,但是如果有人能指出我在正确的轨道上会很棒,那么基本上我在一个看起来像这样的变量中只有一行文字:
Lambo 1; Trabant 2; Car 3;
然后我想分开"兰博"然后它自己的变量" 1"它自己的变量,并重复其他变量。我该怎么做呢? 我知道explode()但不知道如何将变量分割两次等等。
根据评论的要求,我想要的输出是这样的: $ Item =" Lambo" $ Quantity = 1 然后回显它们并返回到循环顶部,例如为Trabant和Car做同样的事情
答案 0 :(得分:2)
<?php
$in = "Lambo 1; Trabant 2; Car 3;";
foreach (explode(";", $in) as $element) {
$element = trim($element);
if (strpos($element, " ") !== false ) {
list($car, $number) = explode(" ", $element);
echo "car: $car, number: $number";
}
}
您可以使用explode在每个;
上拆分输入,循环显示结果,然后拆分每个。
答案 1 :(得分:0)
您可以使用preg_split并通过移动两次遍历数组。
$output = preg_split("/ (;|vs) /", $input);
答案 2 :(得分:0)
您可以使用preg_match_all
获取这些部分:
$line = "Lambo 1; Trabant 2; Car 3;";
preg_match_all("/[^ ;]+/", $line, $matches);
$matches = $matches[0];
使用该示例数据,$matches
数组将如下所示:
Array ( "Lambo", "1", "Trabant", "2", "Car", "3" )
答案 3 :(得分:0)
$new_data="Lambo 1;Trabant 2;Car 3;" ;
$new_array=explode(";", $new_data);
foreach ($new_array as $key ) {
# code...
$final_data=explode(" ", $key);
if(isset($final_data[0])){ echo "<pre>".$final_data[0]."</pre>";}
if(isset($final_data[1])){echo "<pre>".$final_data[1]."</pre>";}
}
答案 4 :(得分:0)
如果你需要单独使用它们,这会将每个单词和数字放在数组的新键中。
preg_match_all(“/(\ w +)(\ d +); /”,$ input_lines,$ output_array);
单击preg_match_all http://www.phpliveregex.com/p/fM8
答案 5 :(得分:0)
使用全局正则表达式匹配:
<?php
$subject = 'Lambo 1; Trabant 2; Car 3;';
$pattern = '/((\w+)\s+(\d+);\s?)+/Uu';
preg_match_all($pattern, $subject, $tokens);
var_dump($tokens);
你得到的输出是:
array(4) {
[0] =>
array(3) {
[0] =>
string(8) "Lambo 1;"
[1] =>
string(10) "Trabant 2;"
[2] =>
string(6) "Car 3;"
}
[1] =>
array(3) {
[0] =>
string(8) "Lambo 1;"
[1] =>
string(10) "Trabant 2;"
[2] =>
string(6) "Car 3;"
}
[2] =>
array(3) {
[0] =>
string(5) "Lambo"
[1] =>
string(7) "Trabant"
[2] =>
string(3) "Car"
}
[3] =>
array(3) {
[0] =>
string(1) "1"
[1] =>
string(1) "2"
[2] =>
string(1) "3"
}
}
在那里元素2和3完全保存您正在寻找的标记。