如何在php中的字符串中的每一行的开头和结尾添加引号

时间:2011-11-15 17:01:12

标签: php regex

我试图获取部分以逗号分隔的设置中的字符串。我需要在字符串中每行的开头和结尾添加引号或其他标记。有问题的字符串有很多行,如下所示。

IE

2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres

将变成

"2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres"

我尝试了许多正则表达式尝试,但我不得不承认我对正则表达式的理解很差。

3 个答案:

答案 0 :(得分:1)

我假设字符串是多行长的?

我很想创建一个包含每一行的新数组,如下所示:

<?php 
$string = '2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres'; // obviously use a string with multiple lines, but i'm just taking your example

$array = preg_split('/\n+/', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($array as $k=>$v){
  $array[$k]='"'.$v.'"';
}

print_r($array);

或者我说你总是可以使用类似的东西:

<?php
$newstring = '"'.str_replace("\n", "\"\n\"",$string).'"';

虽然,第二种方法可能需要一些改进来考虑“\ r”或“\ r \ n”。

答案 1 :(得分:1)

您可以滥用.与换行符不匹配的事实。

$result = preg_replace('/(.+)/', '"$1"', $subject);

答案 2 :(得分:0)

如果你的字符串是:

2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres

您只需要在每行的开头和结尾使用双引号strtr

$sLines = "2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres
2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres";

$arrTr = array();
$arrTr1 = array();
$arrTr[chr(13)] = '"'.chr(13).'"';
$arrTr1["\"\n"] = '"';

$sLines = strtr(strtr($sLines,$arrTr),$arrTr1);

$sLines = '"'.$sLines.'"';
echo '<pre>';
print_r($sLines);
echo '</pre>';

但是,如果您使用“\ n”字符粘贴线条,则可以执行此操作:

$sLines = "2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres\n2011.11.12 20:06,Teac Ous,Solid Pyroxeres,46521,Pyroxeres";

$arrTr = array();
$arrTr1 = array();
$arrTr["\n"] = '"'."\n".'"';

$sLines = strtr($sLines,$arrTr);

$sLines = '"'.$sLines.'"';
echo '<pre>';
print_r($sLines);
echo '</pre>';