2015-05-07 4 views
2

Вот мой источник текста:добавить апостроф соответствует регулярному выражению

  $data['DATA_TYPE'] = 'enum('Film Studio','Website','Advertiser','Distributer')'; 

Вот мой код:

  $data = static::getColumnInfo($resourceClassName, $columnName); 
      $data = $data['DATA_TYPE']; 
      preg_match('/enum\((.*)\)$/',$data,$matches); 
      $vals = explode(',',$matches[1]); 

Вот результат:

  0 => string ''Film Studio'' (length=13) 
      1 => string ''Website'' (length=9) 
      2 => string ''Advertiser'' (length=12) 
      3 => string ''Distributer'' (length=13) 

Как вы можете видеть , результат содержит цитату в начале и конце в каждом индексе.

Мне нужно изменить регулярное выражение на его текущие операции плюс начальные и конечные кавычки, поэтому я могу поддерживать кавычки внутри, но соответствовать ожидаемым внешним.

+0

Как вы генерировании "результат"? Я считаю, что дополнительные кавычки - это ваш результат (var_dump()?). длина строки включает только строку и одинарные кавычки, которые вы получили из строки в вашем регулярном выражении. вы можете обрезать эти кавычки с отделкой ($ input, "'"); – fbas

+0

@anubhava string 'enum (' Film Studio ',' Website ',' Advertiser ',' Distributer ')' (length = 56) – jkushner

+0

@fbas результат исходит от взрыва, – jkushner

ответ

1

Вы можете использовать:

$vals = explode(',', preg_replace("/^'|'$|'(?=,)|(?<=,)'/", "", $matches[1])); 

т.е. удалить одиночные кавычки из $matches[1] строки, а затем взрывается с помощью запятой.

Он получит:

print_r ($vals); 
Array 
(
    [0] => Film Studio 
    [1] => Website 
    [2] => Advertiser 
    [3] => Distributer 
) 

Объяснение:

/^'|'$|'(?=,)|(?<=,)'/ # regex used for removing single quote 
^'      # quote found at start 
'$      # quote found at end 
'(?=,)     # lookahead, quote followed by a comma 
(?<=,)'     # lookbehind, quote preceded by a comma 
+0

, к сожалению, это удалит одинарные кавычки, которые находятся внутри строки. Мне нужны только кавычки только с самого начала и конца. – jkushner

+0

отделка ($ data, "'"); – fbas

+0

@fbas, который тоже не будет работать. который удалит только первую цитату и последнюю цитату, оставив объекты внутри. Мне нужно регулярное выражение для группировки по котировкам тоже – jkushner

Смежные вопросы