PHP strpos()的\\\\\\\\r“;人物
我在MySQL数据库中有一个在“$description”中请求的文本,我想知道描述中是否存在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?此外,我也可
\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。