如何从搜索查询中去除斜线

How to strip slashes from search query

我将以下代码添加到我的一个 WordPress 网站上的主题 index.php 文件中,这样一个标题就会出现在包含实际搜索词的搜索结果页面上。换句话说,如果我搜索 blue 这个词,这个标题就会显示 Search results for: blue.

<?php
if ( is_search() ); ?>
<h3>Search results for: <?php print_r($_GET['s']); ?></h3>

但是,当将引号中的某个部分放入搜索栏时,输出效果不是很好。换句话说,如果我搜索短语 "blue is a color",则此标题显示为:Search resulst for: \"blue is a color\"

我想知道如何阻止这些反斜杠出现。我做了一些研究,但我发现没有任何效果。我最多是 php 初学者。

PHP 允许您使用 explode() 命令轻松地从字符串中删除值。

$fractor = explode("\", $_GET['s']);

你可以随便调用$fractor,只要记住它变成了所有拆分字符串的数组。

参考:http://php.net/manual/en/function.explode.php

只需使用回显:

<?php
if ( is_search() ); ?>
<h3>Search results for: <?php echo $_GET['s']; ?></h3>

你必须 "escape" 这个变量才能打印它!想象一下,如果有人在搜索栏中写了一个 <script>,它在打印时操纵了您的网站。在此处继续阅读:Escaping variables。一个例子是这样的:

echo htmlspecialchars($_GET['s']);

这会删除 <> 这样的字符,这样就没有人可以将脚本或 html 打印到您的站点中

使用print代替print_r

<?php
if ( is_search() ); ?>
<h3>Search results for: <?php print($_GET['s']); ?></h3>

print_rprint

有一些区别

打印

  • 只输出一个字符串

  • Returns1,所以可以用在表达式中

  • 例如打印 "Hello"

  • 或者,如果($expr && print "foo")

print_r()

  • 输出任何一个值的人类可读表示

  • 不仅接受字符串,还接受其他类型,包括数组和对象,将它们格式化为可读

  • 调试时有用

  • 如果给出第二个可选参数

  • ,则可以return将其输出为return值(而不是回显)