PHP 忽略字符串中的空格来形成数组

标签 php preg-match preg-match-all

我有一个像这样的 PHP 字符串-

$str = "Foo var1='Abook' var2='A book'";

我正在尝试将此字符串转换为数组,该数组会将 '' 引号内的单词视为单个语句(即它们将忽略 '' 引号内的空格)。 所以我的数组看起来像

Array
(
   [0] => "Foo",
   [1] => "var1='Abook'",
   [3] => "var2='A book'"
)

请注意,该数组是由外部 '' 引号之间的空格分隔字符串组成的,但不在其内部。

你能给我一些好的 preg 函数吗?这样我就可以完成这个任务。

最佳答案

这适用于您的示例输入和输出,但对您来说可能不够通用。这至少是一个起点:

<?php
  $str = "Foo var1='Abook' var2='A book'";
  $res = array();

  $bits = explode(' ', $str, 2);

  $res[] = $bits[0];

  if (preg_match_all("/\w+='[^']+'/", $bits[1], $matches) !== false) {
    $res = array_merge($res, $matches[0]);
  }

  print_r($res);
?>

关于PHP 忽略字符串中的空格来形成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441759/

相关文章:

php - 在 PHP 中使用此正则表达式时遇到问题

javascript - 在自定义数组 JavaScript 中创建具有未知数量输入的 JSON

php - 如何在不刷新导航栏的情况下加载内容

php - preg_replace 即使在第一次替换之后也匹配字符串中的所有匹配项

utf-8 - PHP5.3 preg_match 与 Umlaute UTF-8 修饰符

PHP 正则表达式匹配不是以 "admin"、 "login"... 等单词开头的内容?

php - 如何在德语元音变音 [äöü] 上 preg_match_all?

php - url中的#有什么用

php - "one to many"与 querybuilder 关系的 Doctrine innerjoin

PHP 正则表达式 : how to use newline in expression?