2016-05-08 3 views
-3

Я пытаюсь заменить одну цитату (') другой цитатой (), но я не могу заставить ничего работать. Также, как я могу сделать эту работу над несколькими строками ($text, $title, $notice)?Замените одну цитату (') другой цитатой (') str_replace

вход: не

выход: не

Я пытаюсь это:

$text = str_replace(array("'",'"'), array('’'), $text);  
$text = htmlentities(str_replace(array('"', "'"), '’', $text); 
$text = htmlentities(str_replace(array('"', "'"), '’', $_POST['text'])); 
$text = str_replace("'" ,"’",$text); 
$text = str_replace("'" ,"’",$text); 
$text = str_replace(array("'"), "’", $text); 
$text = str_replace(array("\'", "'", """), "’", htmlspecialchars($text)); 
$text = str_replace(array('\'', '"'), '’', $text); 
$text = str_replace(chr(39), chr(146), $text); 
$text = str_replace("'", "&ampquot;", $text); 

Ничего из этого не работает.

+1

1) Почему именно вы хотите это сделать? 2) И каков точный вывод 'highlight_string ($ text)'? – Rizier123

+0

Если ответ @ Quasimodosclone не работает, можете ли вы представить воспроизводимый пример? Я попробовал свой первый метод с 'don't', и он отлично работает. Очевидно, что он не будет работать с двойными кавычками, но для одиночных кавычек он действительно работает. – Chris

+1

Возможный дубликат [Замена кавычек на str \ _replace() не работает и как удалить пробелы в строке PHP?] (Http://stackoverflow.com/questions/37094014/replacing-quotes-with-str- replace-is-not-working-and-how-do-i-remove-spaces-i) – splash58

ответ

5

Когда вы используете массив в качестве замены, дайте столько замен, сколько вы даете иглам. В Else используется простая строка.

<?php 
$text = 'Peter\'s cat\'s name is "Tom".'; 
$text = str_replace(array("'",'"'), '’', $text); 
echo $text; 

$text = 'Peter\'s cat\'s name is "Tom".'; 
$text = str_replace(array("'",'"'), array('’', '`'), $text); 
echo $text; 
?> 

Для выполнения этой задачи на нескольких переменных, которые вы могли бы сделать

<?php 
$text = 'Peter\'s cat\'s name is "Tom".'; 
$title = 'Peter\'s cat\'s name is "Tom".'; 
$notice = 'Peter\'s cat\'s name is "Tom".'; 

foreach([&$text, &$title, &$notice] as &$item) 
    $item = str_replace(array("'",'"'), '’', $item); 

echo "text: $text<br>title: $title<br>notice: $notice"; 
?> 
+0

Просто отметив, что нет ничего плохого в том, чтобы иметь больше игл, чем замены. однако больше замен, чем иглы. – chiliNUT

+0

@chiliNUT - Нет ничего «неправильного», что означает, что ошибка не выбрасывается, это правильно. Однако владелец вопроса не работает должным образом. Поведение равно заполнению массива замен на пустые строки. –

1

Я попытался с помощью preg_replace() и она работала отлично в первый раз:

$text = "Someone told me about a 'bacon and cheese sandwich'"; 
$text = preg_replace("#\'#", '’', $text); 
echo $text; 

Выход
Someone told me about a ’bacon and cheese sandwich’

Отдайте это.

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