如何从搜索查询中删除斜杠


How to strip slashes from search query

我在我的一个WordPress网站上的主题索引.php文件中添加了以下代码,以便在搜索结果页面上显示一个包含实际搜索词的标题。换句话说,如果我搜索单词蓝色,则此标题将显示为"搜索结果:蓝色"。

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

但是,当引号中的阶段被放入搜索栏中时,输出不是很好。换句话说,如果我搜索短语"蓝色是一种颜色",那么这个标题就会变成:搜索搜索:"蓝色是一种颜色"

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

只需使用 echo:

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

不过,在打印之前,您必须"转义"此变量!想象一下,如果有人在搜索栏中写了一个<script>,在打印您的网站时对其进行了维护。 请继续阅读:转义变量。 一个例子是这样的:

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

这将删除<>等字符,因此没有人可以将脚本或html打印到您的网站中

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

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

您可以随心所欲地调用$fractor,只需记住它将成为所有拆分字符串的数组。

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

使用 print 而不是 print_r

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

print_rprint有一些差异

打印

  • 仅输出单个字符串

  • 返回 1,因此可以在表达式中使用

  • 例如打印"你好"

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

print_r()

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

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

  • 调试时很有用

  • 如果给出第二个可选参数,可能会将其输出作为返回值(而不是回显)