я хочу преобразовать это:
$text='{i:0;s:8:"Par mail";}';
к:
$text="Par mail";
а также
$ text = ‘{i: 0; s: 8: «Par mail»; i: 1; s: 7: «Par fax»;}’;
к:
$ text = «Par mail | Par fax»;
И другие к 4-му выражению
Для этого я использую функцию PHP preg_replace
$text = preg_replace('/{i:[^\\[]?;s:[^\\[]?:"(.*?)";i:[^\\[]?;s:[^\\[]?:"(.*?)";/}','"$1 | $2"', $text);
Мне нужна помощь, формат ввода должен быть точным для преобразования текста.
радушно
Я спустился preg_replace_callback
маршрут.
<?php
$s = '{i:0;s:8:"Par mail";i:1;s:7:"Par fax";}';
$arrM = array();
preg_replace_callback("/(s\:[0-9]*\:\")([A-Z\ ]+)/i", function($arrMatches) use(&$arrM) {
$arrM[] = $arrMatches[2];
}, $s);
echo implode(" | ", $arrM); //Output: Par mail | Par fax
использование [^"]*
вместо .*?
{i:[^\\[]*?;s:[^\\[]*?:"([^"]*)";i:[^\\[]*?;s:[^\\[]*?:"([^"]*)";}
<?php
$string = '{i:0;s:8:"Par mail";i:1;s:7:"Par fax";}';
$pattern = '~{i:[^\\[]*?;s:[^\\[]*?:"([^"]*)";i:[^\\[]*?;s:[^\\[]*?:"([^"]*)";}~';
$replacement = "$1 | $2";
echo preg_replace($pattern, $replacement, $string);
?>
Выход:
Par mail | Par fax
Я полагаю, ваша строка содержит следующие символы: a:2
и тогда может быть не сериализовано:
$text='a:2:{i:0;s:8:"Par mail";i:1;s:7:"Par fax";}';
$obj = unserialize($text);
print_r($obj);
Выход:
Array
(
[0] => Par mail
[1] => Par fax
)
После этой десериализации вы можете объединить значения с |
,
echo implode('|', $obj);// --> Par mail|Par fax