反斜杠在PHP中打破字符串

时间:2016-11-24 20:08:06

标签: php string string-formatting

我有一个问题。我试图用这样的ASCII文本写一个字符串:' / \'。但每当我这样做时,反斜杠会通过取消定义字符串的引号来搞砸代码,从而将其搞砸。反正是否取消反斜杠所以它没有取消引用?谢谢你们!

4 个答案:

答案 0 :(得分:2)

\是特殊字符,表示:'下一个字符具有特殊含义'。

因此,如果你想显示\,你应该写... \\以便在输出中获得一个\

答案 1 :(得分:0)

写这样的东西时,一个很好的解决方案是HEREDOC。在heredoc块中你不需要担心逃避任何东西,它只是文本。

例如:

echo <<<TEXT

/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\

TEXT;

有一个问题。如果你没有在行的开头对齐回音,或者如果TEXT,那么PHP将会中断;在行的开头没有对齐。

也可以将Heredoc分配给变量,如下所示:

$var = <<<SOME_MORE_TEXT

/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\

SOME_MORE_TEXT;

最后,HEREDOC会保留标签和空格。在进行ASCII艺术时,这也可能会派上用场。

有关详细信息,请参阅:http://php.net/manual/en/language.types.string.php

答案 2 :(得分:0)

显示您尝试过的内容会非常有帮助,但这会产生您要求的确切输出(如图所示)

bool shutdownDetected = false;

void signal_handler(const int sigid)
{
    shutdownDetected = true;
}

int main(int argc, const char * argv[])
{
    signal(SIGTERM, (sig_t)signal_handler);

    std::async(std::launch::async, [&] () {
        std::this_thread::sleep_for( std::chrono::milliseconds{5000});
        std::cout << "On TIMER!" << std::endl;
    } );

    std::cout << "main function" << std::endl;

    while (!shutdownDetected) {
    }

    return EXIT_SUCCESS;
}

'/ \'

它还应该让您了解反斜杠转义如何在不同类型的字符串中起作用。

答案 3 :(得分:0)

使用单引号时,您只需要逃避最后一次。

$var = 'backslash\backslash\backslash\\';
// output is:
// backslash\backslash\backslash\