Я чувствую себя очень глупо, потому что не способен понять это, но я просто не могу это понять. Мне нужно заменить строку регулярных выражений на шаблон, я нашел два примера этого, но они честно оставили меня более смущенным, чем когда-либо.Как заменить шаблон регулярного выражения на шаблон регулярного выражения?
Это моя текущая попытка:
$string = '26 14:46:54",,"2011-08-26 14:47:02",8,0,"BUSY","DOCUMENTATION","1314370014.18","","","61399130249","7466455647","from-internal","""Oh Snap"" <61399130249>","SIP/1037-00000014","SIP/CL-00000015","Dial","SIP/CL/61436523277,45","2011-08-26 14:47:06","2011-08-26 14:47:15","2011-08-26 ';
$pattern = '["SIP/CL/\d*?,\d*?",]';
$replacement = '"SIP/CL/\1|\2",';
$string = preg_replace($pattern, $replacement, $string);
print($string);
Но это просто заменяет \1
и \2
с пробелами. Поэтому, очевидно, я не понимаю всю концепцию.
То, что я хотел в конце концов изменить:
this: "SIP/CL/61436523277,45"
to: "SIP/CL/61436523277|45"
что запятая в плохо отформатированный CSV скидывает некоторые из моих других сценариев.
Это не похоже, плохо отформатирован, как это в кавычки ... вы используете [ 'fgetcsv'] (http://www.php.net/fgetcsv) для этого, не так ли? Или ['str_getcsv'] (http://www.php.net/str_getcsv), если это строка. – Wrikken
Я не был, но теперь я. Мне все равно нужно было изучить эту форму замены регулярных выражений. Так убили двух зайцев одним выстрелом :). Я знал о fgetcsv, но это не устраивало моих целей (его 1.8GB + csv ...., не могу загрузить все это в память), но str_getcsv работал хорошо! :) – Mattisdada
ОК, для справок в будущем: 'fgetcsv' не читает полный файл в памяти, просто по строкам;) – Wrikken