在引号内分隔文字?

时间:2016-05-20 21:13:18

标签: javascript php jquery json

我想知道是否可以分隔引号内的字符串。

我想使用jQuery Plugin在项目上创建标签,但是会有多个标签,我不会知道用户的所有可能性,因此数据库中的多对多关系不会工作,因为有许多专业术语可以使用。

我不介意使用单独的表,但是可能有很多重复项,我宁愿将它存储在表中的一个字符串中。

所以可以分开这样的文字:

"Tag 1" "Tag 2" "Tag 3"

进入一个数组,然后在PHP foreach循环中循环它们,这样我就可以回应它们了吗?

3 个答案:

答案 0 :(得分:1)

我将CSV解析器与自定义机箱和分隔符(例如空格和双引号)一起使用。

$string = '"Tag 1" "Tag 2" "Tag 3" "Tag 4"';
print_r(str_getcsv($string, ' ', '"'));

输出:

Array
(
    [0] => Tag 1
    [1] => Tag 2
    [2] => Tag 3
    [3] => Tag 4
)

手动:http://php.net/manual/en/function.str-getcsv.php
演示:https://eval.in/574590

答案 1 :(得分:0)

尝试使用explodetrim的组合。

$str = '"Tag 1" "Tag 2" "Tag 3"';
$arr = explode(' ', $str);
foreach ( $arr as $key => $val ) {
  $arr[$key] = trim($val, '"');
  echo $val . PHP_EOL;
}

这基本上如下:

  • 使用空格作为分隔符将$str转换为数组(删除分隔符)。
  • 选择每个元素为$val并删除。
  • 的封闭引号
  • 将修剪过的元素保存回阵列(供以后使用)。

答案 2 :(得分:0)

嗯......这正是你能做到的:

第一部分:要获取标记,然后将其保存在数据库中。

使用您的jQuery TextExt插件:

注意:由于您的插件将tags保存在json array.so中以便首先保存数据库中的那些,您需要解码json数组然后才能保存它在您的数据库中:

<?php
//Assuming Your Tags JSON Array As
$tags = '["javascript","php","jquery","json","html","css"]';
$tags_array = json_decode($tags);
echo "<pre>";
print_r($tags_array);
echo "</pre>";
?>

输出:

 Array
(
    [0] => javascript
    [1] => php
    [2] => jquery
    [3] => json
    [4] => html
    [5] => css
)

第二部分:能够从数据库中获取标记并能够获取数组中的标记。

从数据库中获取标记,然后在阵列中获取这些标记:

注意:因为您将从数据库中获取字符串,因此:

<?php
//Assuming that you fetched your tags in a an array from your database
//But here I am going forward with a string just
$tags = '"Tag 1" "Tag 2" "Tag 3" "Tag 4"';
echo "<pre>";
print_r(str_getcsv($tags, ' ', '"'));
echo "</pre>";
?>

输出:

Array
(
    [0] => Tag 1
    [1] => Tag 2
    [2] => Tag 3
    [3] => Tag 4
)