php字符串进程

时间:2011-06-04 10:14:55

标签: php string

我有一个文本文件,其中每一行都是一个条目。 每一行都有一些用空格分隔的单词和带有括号

的条目末尾的2-3个单词

例如

asd asdasd asdasd {m} [jsbbsdfb] 

如何在php中获得以下结果

$data[0]="asd asdasd asdasd"

$data[1]= "{m}"

$data[2]= "[jsbbsdfb]"

5 个答案:

答案 0 :(得分:1)

$regex = '/([a-zA-Z ]*) (\{[a-zA-Z]\}) (\[[a-zA-Z]+\])/';
$yourText = "asd asdasd asdasd {m} [jsbbsdfb]";
$lines = explode("\n", $yourText);
foreach($lines as $line) {
    $result = array();
    preg_match($line, $regex, $result);
    print_r($result);
}

你当然可以调整正则表达式:)

答案 1 :(得分:1)

您可以使用substringstrpos查找正确的部分,也可以使用preg_match(正则表达式),两者都有自己的(dis)优势。使用preg_match你可以做到这一点只有一行,但它相对较慢而且不易使用。我会做这样的事情:

while(/* $line is next line available */) {
  $brace_position = strpos($line, '{');
  $bracket_position = strpos($line, '[');

  $data = array(
    substr($line, 0, ($brace_position - 1),
    substr($line, $brace_position, ($backet_position - $brace_position - 1)),
    substr($line, $bracket_position)
  );
}

上面提供的另一个答案,也是正确的,但是只有,如果每一行的长度完全相同(即空格的单词数量相同)。 check123的答案不是你问题的正确答案。

请参阅 strauberry的回答,了解我在上面提到的正则表达式。

答案 2 :(得分:0)

$ a = explode(“”,$ string);      $ a [1] //将存储字符串的第一个单词      $ a [2] //依此类推,直到字符串结束

确定!我上面写错了。你可能想尝试类似的东西:

$str = "asd asdasd asdasd {m} [jsbbsdfb]";
$k=strlen($str);
for($i=0;$i<$k;$i++) {
    $char = substr($str,$i,1);
    //do your operation here on
}

并循环遍历字符串的每个字符并按需运行。

答案 3 :(得分:0)

几种方式......你可以尝试在空间上爆炸......然后将前3个阵列元素连接在一起

类似的东西:

$yourString = "asd asdasd asdasd {m} [jsbbsdfb]";
$elements = explode ( " " , $yourString);

$string1 = $elements[0] . $elements[1] . $elements[2];
$string2 = $elements[3];
$string3 = $elements[4];

如果你想要

,你很明显可以将值设置为数组的前3个元素

即:

$yourString = "asd asdasd asdasd {m} [jsbbsdfb]";
$elements = explode ( " " , $yourString);

$elements[0] = $elements[0] . $elements[1] . $elements[2];
$elements[1] = $elements[3];
$elements[2] = $elements[4];

答案 4 :(得分:0)

$x = "asd asdasd asdasd {m} [jsbbsdfb]";

$a1 = strpos($x, '{');
$a2 = strpos($x, '}', $a1);
$b1 = strpos($x, '[', $a2);
$b2 = strpos($x, ']', $b1);

$data = array();
$data[] = substr($x, 0, $a1-1);
$data[] = substr($x, $a1+1, $a2-$a1-1);
$data[] = substr($x, $b1+1, $b2-$b1-1);

var_dump($data);