2014-07-09 3 views
0

Я пытаюсь вставить разрыв после имени в строке. Но, имя может иметь символы, такие как éPreg заменить на буквы с акцентом

$string = 'Test string'; 
$name = 'Tést'; 

$replacement = '$0<br />$1'; 
return preg_replace("/^$name/i", $replacement, $string); 

Я хотел бы, чтобы вернуться:

Test<br /> string 

тест также может быть что-то вроде: Приветственные, Прощальные или NUL Это должно быть возможным правильно?

Заранее спасибо

+0

Если вы действительно не контролирует содержание '$ name' вы могли бы быть в для удивления, когда он показывает с регулярными выражениями. Думайте '.',' | 'и т. Д. Вы получаете идею. В зависимости от того, чего вы пытаетесь достичь, это может даже стать уязвимостью безопасности. – kmkaplan

ответ

0

я использую что-то вроде этого, чтобы сверять акцентов:

$collate = [ 
    "À-Æ" => "A", "à-æ" => "a", "Ç" => "C", "ç" => "c", 
    "È-Ë" => "E", "è-ë" => "e", "Ì-Ï" => "I", "ì-ï" => "i", 
    "Ñ" => "N", "ñ" => "n", "Ò-Ø" => "O", "ò-ø" => "o", 
    "ß" => "s", "Ù-Ü" => "U", "ù-ü" => "u", "Ý" => "Y", "ý" => "y" 
]; 

$string = "Test string"; 
$name = "Tést"; 

foreach($collate as $from => $to) { 
    $name = preg_replace("/[".$from."]/", $to, $name); 
} 
// echo $name; => "Test" 

return preg_replace("/^".$name."/", "$0<br />", $string); 
// result: "Test<br /> string" 
+0

Извините за повторное изменение настроек, я продолжаю читать ваш вопрос несколько по-разному каждый раз, когда XD –

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