Проблема с отображением в PHP Regex - PullRequest
4 голосов
/ 13 апреля 2011

Я пытаюсь создать поле для сортировки названий книг, которое убирает ведущие «A, An, The» и добавляет его к сильному после запятой и пробела. Таким образом, «Дорога» станет «Дорога»

Звучит просто, но в приведенном ниже коде есть кое-что, из-за чего IE (без других браузеров) выплевывает огромный блок тарабарщины.

 $node_field[0]['value'] = preg_replace(
     '/^(A|An|The|a|an|the) (.*)/', 
     "$2\x00,$1",
     $node->title
 );

1 Ответ

4 голосов
/ 13 апреля 2011

Вы должны использовать что-то более похожее на

$node_field[0]['value'] = preg_replace(
 '/^(A|An|The) (.*)/i', 
 "$2, $1",
 $node->title
);

Если я правильно понимаю, это должно изменить любое "A ...", "An ..." или "The ..." на "..., A "," ..., An "и" ..., The "соответственно.

Символ i после косой черты в шаблоне Regex делает его нечувствительным к регистру, который должен перехватывать все версииA, An или The.

...