2016-05-08 13 views
-3

Ich versuche, ein einzelnes Zitat (') durch ein anderes Zitat () zu ersetzen, aber ich kann scheinen, nichts zur Arbeit zu bekommen. Wie kann ich dies auch an mehreren Strings ($text, $title, $notice) arbeiten lassen?Ersetze ein einfaches Zitat (') durch ein anderes Zitat (') str_replace

Eingang: nicht

Ausgang: nicht

ich dies versuchen:

$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); 

Nichts davon funktioniert.

+1

1) Warum genau möchten Sie das tun? 2) Und was ist die exakte Ausgabe von 'highlight_string ($ text)'? – Rizier123

+0

Wenn die Antwort von @ Quasimodosclone nicht funktioniert, können Sie ein reproduzierbares Beispiel liefern? Ich habe deine erste Methode mit 'don't' versucht und es funktioniert gut. Natürlich funktioniert es nicht mit doppelten Anführungszeichen, aber für einfache Anführungszeichen funktioniert es. – Chris

+1

Mögliches Duplikat von [Ersetzen von Anführungszeichen mit str \ _replace() funktioniert nicht, und wie entferne ich Leerzeichen in einer PHP-Zeichenfolge?] (Http://stackoverflow.com/questions/37094014/relucing-quotes-with-str- replace-is-not-working-und-wie-do-i-remove-spaces-i) – splash58

Antwort

5

Wenn Sie ein Array als Ersatz verwenden, geben Sie so viel Ersatz wie Sie Nadeln geben. Andernfalls verwende eine einfache Zeichenfolge.

<?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; 
?> 

Um diese Aufgabe auf mehreren Variablen führen Sie

<?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

Nur, dass es nichts falsch daran ist, mehr Nadeln als Ersatz zu haben. mehr Ersatz als Nadeln wäre aber falsch. – chiliNUT

+0

@chiliNUT - Es gibt nichts "falsches" bedeutet, dass kein Fehler geworfen wird, das ist richtig. Es funktioniert jedoch nicht wie erwartet von dem Besitzer der Frage. Das Verhalten entspricht dem Füllen des Ersetzungsarrays mit leeren Strings. –

1

ich preg_replace() versuchte mit tun könnten, und es funktioniert perfekt erstes Mal: ​​

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

Ausgabe
Someone told me about a ’bacon and cheese sandwich’

Probieren Sie es aus.