Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP strpos()的\\\\\\\\r“;人物_Php_Str Replace_Strpos - Fatal编程技术网

PHP strpos()的\\\\\\\\r“;人物

PHP strpos()的\\\\\\\\r“;人物,php,str-replace,strpos,Php,Str Replace,Strpos,我在MySQL数据库中有一个在“$description”中请求的文本,我想知道描述中是否存在\r\n。所以我得到: if(strpos($description, "\\\\\\\\r\\\\\\\\n") !== FALSE) { echo "String is here."; } else { echo "String not found."; } 但这总是输出“字符串未找到”。我相信在搜索的字符串中有一个错误的转义(\r\r\n)。我怎样才能通过\r\r\n来构建RPOS?此外,我也可

我在MySQL数据库中有一个在“$description”中请求的文本,我想知道描述中是否存在
\r\n
。所以我得到:

if(strpos($description, "\\\\\\\\r\\\\\\\\n") !== FALSE) {
echo "String is here.";
} else {
echo "String not found.";
}
但这总是输出“字符串未找到”。我相信在搜索的字符串中有一个错误的转义(
\r\r\n
)。我怎样才能通过
\r\r\n
来构建RPOS?此外,我也可能会最终用str-u替换掉所有<<
>\\\\\\\\\\\\\r\\\\\r\\\\\\\\r,我也可能会用str-u替换掉所有<
\u,用
\r\n,我可能会最终用str-u-u替换掉所有
\u,取代,取代所有
\u,取代所有
\u,取代所有
\u,用
\u,因为有人做了一些人做了一些人做了一些坏的,当有人做了一些不好的人做了一些坏的转义,当有人做了一些_replace也面临同样的问题。我可以在这些任务中使用帮助(str_pos、str_replace)

非常感谢。


<?php
$in = "abc";
if(preg_match('/\n|\r/',$in)){
    echo 'found';
}else{
    echo 'not found';
}

检测反斜杠字符的不幸性质是因为它也是通用转义字符。要在字符串中加上一个反斜杠,你必须用它本身来转义它

也就是说,如果要检测单个反斜杠,代码可能如下所示

if(strpos($description, '\\' ) !== FALSE)
if(strpos($description, '\\\\\\\\\\\\\\\\r\\\\\\\\\\\\\\\\n' ) !== FALSE)
因此,如果您想要检测八个连续的反斜杠,您要匹配的字符串将需要两倍于-16

if(strpos($description, '\\\\\\\\\\\\\\\\' ) !== FALSE)
因此,使用
strpos()
的最终匹配必须如下所示

if(strpos($description, '\\' ) !== FALSE)
if(strpos($description, '\\\\\\\\\\\\\\\\r\\\\\\\\\\\\\\\\n' ) !== FALSE)
我还注意到我换成了单引号。这是因为
\n
\r
在双引号字符串文本中

您还可以使用正则表达式来实现这一点,这将更加灵活和强大

if ( preg_match( "/\\x5C{8}[rn]/", $description ) )
编辑 对于搜索替换,我建议这样做。正如我前面提到的,正则表达式将更加强大-这一个将把
\r
\n
(而不仅仅是当它们相邻时)与前面任意数量的反斜杠匹配,而不仅仅是其中的8个

$description = preg_replace( "/\\x5C+([rn])/", '\\\${1}', $description );

似乎stackoverflow在代码标记之外的地方剪切了一些“\”。标记中的代码是所需的字符串。请告诉我,好吗?@Manny使用backticks`输入原始文本。确实没有什么启示。最好不要首先生成这样的字符串,当然也不要让您的语言强制您创建这些字符串。@Ignacio它不是PHP。是一些程序员在使用它。如果反斜杠的数量是偶数,那么
打印“\\\\n”
打印“\\\\n”
相同-标记器处理双引号字符串并不比处理单引号字符串差。@mario-是的,这是真的。我仍然认为对此类内容使用单引号更为实用。@Manny我还添加了搜索/替换建议。\n我认为不应该用文字替换\n。