file_get_contents возвращает неверный результат, если содержимое содержит знак & ldquo; & lt; & rdquo; и символ после него [дубликат]

TL; DR: Попробуйте использовать Html.Partial вместо Renderpage


Я получал Object reference not set to an instance of an object, когда пытался сделать вид в представлении, отправив ему модель, например это:

@{
    MyEntity M = new MyEntity();
}
@RenderPage("_MyOtherView.cshtml", M); // error in _MyOtherView, the Model was Null

Отладка показала, что модель была Null внутри MyOtherView. Пока я не сменил его на:

@{
    MyEntity M = new MyEntity();
}
@Html.Partial("_MyOtherView.cshtml", M);

И это сработало.

Кроме того, причина, по которой я не имел Html.Partial для начала, заключалась в том, что Visual Studio иногда выдает ошибки, (f9), если он находится внутри другого построенного цикла foreach, хотя это не ошибка:

@inherits System.Web.Mvc.WebViewPage
@{
    ViewBag.Title = "Entity Index";
    List<MyEntity> MyEntities = new List<MyEntity>();
    MyEntities.Add(new MyEntity());
    MyEntities.Add(new MyEntity());
    MyEntities.Add(new MyEntity());
}
<div>
    @{
        foreach(var M in MyEntities)
        {
            // Squiggly lines below. Hovering says: cannot convert method group 'partial' to non-delegate type Object, did you intend to envoke the Method?
            @Html.Partial("MyOtherView.cshtml");
        }
    }
</div>

Но я смог запустить приложение без проблем с этим " ошибка". Я смог избавиться от ошибки, изменив структуру цикла foreach, чтобы выглядеть так:

@foreach(var M in MyEntities){
    ...
}

Хотя я чувствую, что это потому, что Visual Studio неправильно интерпретировала амперсанды и скобки .

5
задан Amo 21 November 2011 в 05:46
поделиться

4 ответа

Используйте htmlspecialchars ()

echo htmlspecialchars('string you want to echo');
4
ответ дан frustratedtech 25 August 2018 в 14:25
поделиться

С PHP вы можете создавать разметку HTML, поэтому вам нужно найти способ различать символы HTML-элементов (& lt; & amp;>). Существуют специальные последовательности символов в HTML, которые называются объектами HTML .

Вот несколько примеров:

&gt;     : > (greater-than)
&lt;     : < (less-than)
&amp;    : & (ampersand)
&raquo;  : » (right angle quote marks)
&eacute; : é (e acute)

Почти все символы могут быть представлены с такими сущностями , но он быстро становится утомительным. Вам нужно только помнить, и & gt; один, плюс & amp; для URL.

Ваш код должен быть переписан таким образом, если вы намерены показывать знаки меньше или больше.

<?php
$find = '&lt;tag';
$string = 'blah blah &lt;tag=something&gt;';
?>

Как уже упоминалось в других ответах, вы может использовать функцию htmlspecialchars() для преобразования символов в переменную (например, с пользовательского ввода).

<?php echo htmlspecialchars($string); ?>

отобразит blah blah <tag=something> для просмотра в веб-браузере. Если вы используете PHP в командной строке, например, вам не нужно будет использовать эту функцию.

10
ответ дан sleblanc 25 August 2018 в 14:25
поделиться

Вам нужно использовать символы HTML, чтобы избежать превращения его в HTML.

so:

echo htmlspecialchars("<hello>");
3
ответ дан tekknolagi 25 August 2018 в 14:25
поделиться

вы можете использовать функцию htmlspecialchars для выхода из & lt; кронштейны ..

1
ответ дан Osama Javed 25 August 2018 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: