首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP爆入数组中的术语,将引用的文本保留为单个数组项

PHP爆入数组中的术语,将引用的文本保留为单个数组项
EN

Stack Overflow用户
提问于 2012-08-27 04:36:30
回答 3查看 301关注 0票数 0

我有以下表格的字符串..。

Opera“添加跨平台硬件”“踢屁股”-hippies

一般来说,我只是用了以下几种方法.

代码语言:javascript
复制
$p0 = explode(' ',$string);

但是,现在我希望将任何和所有引号操作符保持为一个数组项,而不是让它们创建单独的项,如"addscross-platformhardware"

我想让这个字符串创建这样的数组.

代码语言:javascript
复制
Array
(
    [0] => 'Opera',
    [1] => 'adds cross-platform hardware',
    [2] => 'kicks butt',
    [3] => '-hippies'
)

我通常不喜欢在任何可能的情况下使用regex。

EN

回答 3

Stack Overflow用户

发布于 2012-08-27 04:43:24

你可以用preg_match_all(...):

代码语言:javascript
复制
$text = 'Opera "adds cross-platform hardware" "kicks butt" -hippies';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $text, $matches);
print_r($matches);
票数 5
EN

Stack Overflow用户

发布于 2012-08-27 04:53:14

不要使用regex,这是一种粗略的代码。

代码语言:javascript
复制
<?
$string='Opera "adds cross-platform hardware" "kicks butt" -hippies';
$g=explodeMe($string);
echo "<pre>";
print_r($g);
echo "</pre>";

function explodeMe($string){
    $k=explode('"',$string);
    foreach ($k as $key => $link)
    {
        if ($k[$key] == ' ')
        {
            unset($k[$key]);
        }
    }
    return array_values($k);
}
?>
票数 0
EN

Stack Overflow用户

发布于 2012-08-27 05:09:16

当我在寻找最快的方法时,我想我会在挑战中加入我自己的方法。

代码语言:javascript
复制
<?php
$q = 'Opera "adds cross-platform hardware" "kicks butt" -hippies';
echo '<div>'.$q.'</div>';
$p0 = explode(' ',$q);
echo '<div><pre>';print_r($p0);echo '</pre></div>';

$open = false;
$terms = array();
foreach ($p0 as $key)
{
 if ($open==false)
 {
  if (substr($key,0,1)=='"')
  {
   $open = $key;
  }
  else {array_push($terms,$key);}
 }
 else if (substr($key,strlen($key) - 1,strlen($key))=='"')
 {
  $open = $open.' '.$key;
  array_push($terms,$open);
  $open = false;
 }
 else
 {
  $open = $open.' '.$key;
 }
}

echo '<div><pre>';print_r($terms);echo '</pre></div>';

echo '<div><pre>';print_r($open);echo '</pre></div>';
?>

输出以下..。

Opera“添加跨平台硬件”“踢屁股”-hippies //由空间开始爆炸..。 阵列( => Opera 1 =>“添加2 =>跨平台3 =>硬件”4 =>“踢5 =>对接”6 => -hippies ) //最终结果。 阵列( => Opera 1 =>“添加跨平台硬件”2 =>“踢屁股”3 => -hippies )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12136277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档