Frage

Ich versuche so etwas zu ersetzen:

$text = "Hello <--name--> !!";
echo str_replace("--","?",$text);

Erwartet:

Hello <?name?> !!

Ergebnis:

Hello !!

(Ich überprüfe den Quellcode und habe kurze offene Tags aktiviert.)

Ich habe so viele Wege ausprobiert, aber es scheint, dass ich nie als Ergebnis einen haben kann <? (oder <?php) Zeichenfolge. Ich denke, es kann mit dem Suhosin -Patch zusammenhängen, der standardmäßig in Ubuntu aktiviert ist. Weiß jemand, bevor er etwas anderes tut, wie man das zum Laufen bringt?

Vielen Dank.

AKTUALISIEREN:

Ich habe es direkt in die Befehlszeile versucht und es hat funktioniert. Ja, das Problem war, dass etwas zwischen PHP -Tags nicht im Browser (Chrome) angezeigt wird, nicht einmal im Quellcode.

echo "A <"."?"."php"." echo 1 "." ?".">"." B";

In Chrome wird "AB" angezeigt, wenn Sie den Quellcode betrachten. Aber Firefox zeigt es vollständig an ... also hat Chrome mich zusammenzurichtet;)

Vielen Dank!!!

Entschuldigung, ich musste die beste Antwort auswählen ... aber für mich waren die 3 Antwort korrekt.

War es hilfreich?

Lösung

Haben Sie sich wirklich in die Quellansicht des Browsers untersucht? <? ?> Abschnitte werden in der Regel als Tags interpretiert.

Wenn Sie nicht verwenden eval() Überall gibt es keine Möglichkeit, dass diese Tags tatsächlich von PHP interpretiert werden.

Vielleicht filtert Suhosin diese, aber das würde mich überraschen. Möglicherweise können Sie es durch Nutzung umgehen

&lt; &gt;

stattdessen.

Andere Tipps

Es hat nichts mit Suhosin zu tun.

<?name?> !! Wenn in einer HTML -Seite angezeigt wird !!

Überprüfen Sie die Seitenquelle.

Ich stimme Pekka und Mike (dem anderen Mike, nicht mir Mike) zu - Sie müssen den HTML -Quellcode wirklich überprüfen, da er korrekt angezeigt wird. Wenn Sie wirklich die weniger als Symbole in der Ausgabe sehen möchten, müssen Sie diejenigen durch HTML-Entitäten ersetzen (wie von Pekka vorgeschlagen):

$search = array('<', '>', '--');
$replace = array('&lt;', '&gt;', '?');
$text = 'Hello <--name--> !!';
echo str_replace($search,$replace,$text);

Sie können auch HTMLSpecialChars wie folgt verwenden:

$text = htmlspecialchars("Hello <--name--> !!");
echo str_replace("--","?",$text); // Hello &lt;?name?&gt; !!

htmlspecialChars wird ersetzen:

  • & mit &
  • " mit "
  • <mit <
  • mit>

Wenn Sie nicht ersetzen möchten, "aus irgendeinem Grund ist dies möglich (siehe http://se2.php.net/manual/en/function.htmlspecialchars.php). &, <und> ist jedoch so weit wie ich immer ersetzt wird &amp;, &lt; und &gt; Wenn Sie HTMLSpecialChars verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top