从数组内的字符串中删除引号

时间:2016-08-31 02:06:12

标签: php regex

我有一个看起来像这样的字符串:

$string = '"excludeIF":["miniTrack","isTriangleHanger","tubeTrack","boxTrack"]';

我需要摆脱“[]数组内部的内容,所以它看起来像这样:

$string = '"excludeIF":[miniTrack, tubeTrack, boxTrack]';

我正在尝试一些正则表达式,但我一直在摆脱所有的引用。

3 个答案:

答案 0 :(得分:3)

对于这个特例:

$string = '"excludeIF":["miniTrack","isTriangleHanger","tubeTrack","boxTrack"]';
preg_match("/((?<=\[).*(?=\]))/", $string, $match);
$change = str_replace('"', "", $match[0]); 
$result = preg_replace("/$match[0]/", $change, $string);

这样做是为了获取方括号内的内容,删除引号,然后用清理后的内容替换原始内容。

如果您稍后在方括号外面使用完全相同的字符串,则可能会遇到错误,但如果您理解我所写的内容,则应该很容易解决。

希望它有所帮助。

PS。如果你向我们展示了你正在尝试的正则表达方式,也许会有所帮助,也许是在正确的道路上,但只是有一些误解。

答案 1 :(得分:1)

所以是的,我同意关于XY问题的评论,但我仍然想尝试帮助。

$string = '"excludeIF":["miniTrack","isTriangleHanger","tubeTrack","boxTrack"]';

您现在需要查找要编辑的字符串的开始和结束位置。这可以通过以下方式完成:

$stringPosition1 = strpos($string,'[');
$stringPosition2 = strpos($string,']');

现在你有了正确的位置,你可以substr()找到你想要编辑的确切字符串。

$str = substr($string,$stringPosition1,$stringPosition2);

从这里你可以做一个简单的str_replace()

$replacedString = str_replace('"','',$str);
$result = '"excludeIF":' . $replacedString;

如果您难以理解上述任何功能,那么查看PHP文档是一个很好的主意。我真的相信你在编码方面同样擅长你的语言知识。所以请阅读以下文件:

答案 2 :(得分:-1)

测试此代码:

<?php
$string = '"excludeIF":["miniTrack","isTriangleHanger","tubeTrack","boxTrack"]';
$str_array = str_split($string);
$string_new = '';
$id = 0;
foreach ($str_array as $value) {
    if($value == '[' || $id != 0){
        $id = ($value != ']') ? 1 : 0;
        $string_new .= ($value != "\"") ? $value : '' ;
    } else {
        $string_new .= $value;
    }
}
echo $string_new;
//RESULT "excludeIF":[miniTrack,isTriangleHanger,tubeTrack,boxTrack]
?>
祝你好运!

修改

<?php
$string = '"excludeIF":["miniTrack","isTriangleHanger","tubeTrack","boxTrack"]';
$part = str_replace("\"","",(strstr($string,'[')));
$string = substr($string,0,strpos($string,'[')).$part;
echo $string;
?>

其他可能的解决方案。

有趣的代码!