Подтвердить что ты не робот

Исключение кавычек в PHP

Я получаю ошибку синтаксического анализа, и я думаю, что это из-за кавычек над "time". Как я могу заставить это рассматривать это как целую строку?

<?php
    $text1 = 'From time to "time" this submerged or latent theater in 'Hamlet'
    becomes almost overt. It is close to the surface in Hamlet pretense of madness,
    the "antic disposition" he puts on to protect himself and prevent his antagonists
    from plucking out the heart of his mystery. It is even closer to the surface when
    Hamlet enters his mother room and holds up, side by side, the pictures of the
    two kings, Old Hamlet and Claudius, and proceeds to describe for her the true
    nature of the choice she has made, presenting truth by means of a show.
    Similarly, when he leaps into the open grave at Ophelia funeral, ranting in
    high heroic terms, he is acting out for Laertes, and perhaps for himself as well,
    the folly of excessive, melodramatic expressions of grief.";

    $text2 = 'From time to "time"';

    similar_text($textl, $text2, $p);
    echo "Percent: $p%";

Проблема в том, что я не могу вручную добавить \ перед каждой кавычкой. Это фактический текст, который мне нужно сравнить.

4b9b3361

Ответ 1

Использовать обратную косую черту как таковую

"From time to \"time\"";

Обратные косые черты используются в PHP для исключения специальных символов в кавычках. Поскольку PHP не различает строки и символы, вы также можете использовать этот

'From time to "time"';

Разница между одиночными и двойными кавычками заключается в том, что двойные кавычки допускают интерполяцию строк, что означает, что вы можете ссылаться на переменные inline в строке и их значения будут оцениваться в строке, такой как

$name = 'Chris';
$greeting = "Hello my name is $name"; //equals "Hello my name is Chris"

В соответствии с вашим последним изменением вашего вопроса, я думаю, что самая легкая вещь, которую вы можете сделать, заключается в том, чтобы использовать "heredoc". Они обычно не используются и, честно говоря, я бы обычно не рекомендовал его, но если вам нужен быстрый способ получить эту стену текста в одну строку. Синтаксис можно найти здесь: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc и вот пример:

$someVar = "hello";
$someOtherVar = "goodbye";
$heredoc = <<<term
This is a long line of text that include variables such as $someVar
and additionally some other variable $someOtherVar. It also supports having
'single quotes' and "double quotes" without terminating the string itself.
heredocs have additional functionality that most likely falls outside
the scope of what you aim to accomplish.
term;

Ответ 2

Используйте функцию addlashes:

 $str = "Is your name O'Reilly?";

 // Outputs: Is your name O\'Reilly?
   echo addslashes($str);

Ответ 3

Сохраняйте текст не в файле PHP, а в обычном текстовом файле, скажем, "text.txt"

Затем с одним простым $text1 = file_get_contents('text.txt'); У команды есть ваш текст без единой проблемы.

Ответ 4

$text1= "From time to \"time\"";

или

$text1= 'From time to "time"';

Ответ 5

Либо выйдите из цитаты:

$text1= "From time to \"time\"";

или используйте одинарные кавычки для обозначения вашей строки:

$text1= 'From time to "time"';

Ответ 6

Вы можете использовать функцию PHP addlashes() для любой строки, чтобы сделать ее совместимой

Ответ 7

Используйте htmlspecialchars(). Тогда кавычки и символы меньше/больше символов не нарушают ваши HTML-теги ~