Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 从字符串中删除定义的字符_Php_Mysql_Strip - Fatal编程技术网

Php 从字符串中删除定义的字符

Php 从字符串中删除定义的字符,php,mysql,strip,Php,Mysql,Strip,我在我的网站上遇到了一个奇怪的问题,我有一个脚本可以记录所有的搜索并在数据库中插入这些搜索词,问题是自从搜索引擎机器人开始在我的网站上鬼鬼祟祟,他们让我的脚本生成像“搜索关键字”这样的搜索关键字 我想在mysql上建立索引之前去掉这些字符(//) 这就是我所拥有的: $search=htmlspecialchars($_GET['load']); $say=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$

我在我的网站上遇到了一个奇怪的问题,我有一个脚本可以记录所有的搜索并在数据库中插入这些搜索词,问题是自从搜索引擎机器人开始在我的网站上鬼鬼祟祟,他们让我的脚本生成像“搜索关键字”这样的搜索关键字 我想在mysql上建立索引之前去掉这些字符(//)

这就是我所拥有的:

$search=htmlspecialchars($_GET['load']); 
$say=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE)"); 
$saydim=mysql_num_rows($say);
$count = $saydim;
$page = !empty($_GET["page"]) ? intval($_GET["page"]) : 1;
$s = ($page-1)*$perpage;
$sayfasayisi=ceil($count/$perpage);
if(ayaral("Arananlar-Kaydet")=="1") {
$ekle=cevir($search);
@mysql_query("insert into tag (baslik,tr,tarih) values ('$search','$ekle',now()) "); }
变量“$search”将调用搜索词,我不知道我必须使用什么样的strip语法来去除那些讨厌的字符

编辑:创建单词的代码如下:

$vtitle = str_replace("\r\n\r\n", ' ', $vtitle); 

$words = explode(' ', $vtitle); 

$k = count($words); 
$k3 = ceil($k/3); 

$new = array(); 
for ($i=0; $i<$k; $i+=$k3) { 
    $new[] = join(' ', array_slice($words,$i, $k3)); 
} 
$tag1 = $new[0]; 
$tag2 = $new[1]; 
$tag3 = $new[2];
$vtitle=str\u replace(“\r\n\r\n”,”$vtitle);
$words=爆炸(“”,$vtitle);
$k=计数($words);
$k3=ceil($k/3);
$new=array();
对于($i=0;$i编辑:

真实的例子

<?php

if(isset($_REQUEST['str'])) {

    $search = $_REQUEST['str'];

    $ser_chk = strpos($search, "/");
    if ($ser_chk > -1) {
    $search = str_replace("/", "", $search);
    }

}

?>

<h1><?php print $search; ?></h1>

<form action="" method="post">

<input type="text" size="100" value="search keywords////////////////////////////////////////////////" name="str" />
<input type="submit" />

</form>
此外,您还可以检查该字符,如果找到,只需将其替换为空字符串即可

$ser_chk = strpos($search, "/");
if ($ser_chk > -1) {
$search = str_replace("/", "", $search);
}
使用MySQL函数从字符串末尾删除,如下所示:

TRIM(TRAILING '/' FROM <string>)

@mysql_query("insert into tag (baslik,tr,tarih) 
values (TRIM(TRAILING '/' FROM '$search'),'$ekle',now())")
REPLACE(<string>, '/', '')

@mysql_query("insert into tag (baslik,tr,tarih) 
values (REPLACE('$search', '/',''),'$ekle',now())")
修剪(从后面的“/”开始)
@mysql_查询(“插入标签(baslik、tr、tarih))
值(TRIM(从“$search')、“$ekle”,now())中拖尾“/”)
要从起点和终点修剪,请使用以下命令

TRIM(BOTH '/' FROM <string>)

@mysql_query("insert into tag (baslik,tr,tarih) 
values (TRIM(BOTH '/' FROM '$search'),'$ekle',now())")
修剪(两个“/”从)
@mysql_查询(“插入标签(baslik、tr、tarih))
值(TRIM(来自“$search”)、“$ekle”和“$now()”的“/”)
要删除所有出现的字符串,请按如下所示使用函数:

TRIM(TRAILING '/' FROM <string>)

@mysql_query("insert into tag (baslik,tr,tarih) 
values (TRIM(TRAILING '/' FROM '$search'),'$ekle',now())")
REPLACE(<string>, '/', '')

@mysql_query("insert into tag (baslik,tr,tarih) 
values (REPLACE('$search', '/',''),'$ekle',now())")
REPLACE(,'/','')
@mysql_查询(“插入标签(baslik、tr、tarih))
值(替换(“$search',“/”,“,”,“$ekle',now()))

希望对您有所帮助……

如果
/
字符总是出现在
$search
的末尾,您可以使用第二个(可选)参数:

$search = "search keywords////////////////////////////////////////////////";
$search = rtrim($search, '/ ');
echo $search; // prints 'search keywords'

字符重复的灵活解决方案是正则表达式

$output = preg_replace('/\/[\/]+/', '/'. $input);

它将处理任意数量的“/”并替换为单个“/”

请不要再使用
mysql.*
函数,它们已被弃用。签出
PDO
mysqli.
并使用准备好的语句。同时
str\u replace('/','.$stirng)
工作人员应该使用post表单,而不是get表单。否则,您会自找麻烦,看起来您重新链接了搜索并犯了错误。另外,到目前为止,您尝试了什么,您只给出了问题的描述。感谢shubhansh,这对本文结尾的///起到了作用,但我注意到这个问题也存在出现在具有///字符的文本上,如:word//'s////。如何删除所有///字符?RegardsI已测试///////word,字符仍然保留。这真是太奇怪了,我不明白当机器人程序点击页面时为什么会生成这些////字符。我将发布创建这些单词的脚本。谢谢我刚刚检查过,但没有问题在第30行的/usr/home/myuser/domains/mydomain.com/public_html/search.php中,我试图通过删除一个“但不起作用”来修复它。感谢您的耐心编辑:输出错误的行与我们在这里工作的行相同只是一个愚蠢的问题,我没有使用您提供的第一行:TRIM(从后面的“/”开始)因为它抛出了一个错误,所以我删除了您的第一个修复程序,您的第一个修复程序正在运行,最后一个修复程序给了我之前回复中提到的错误使用单引号,而不是双引号,我忘了您使用的是PHP。我已经编辑了我的答案,请检查……您到底测试了什么?我测试了您的整个代码,因为变量是same我正在使用。但是///字符仍然没有被删除:它们出现在末尾,并且当文本有“symbol.ie:word//”时。谢谢CarlosI需要删除所有的/,因为在当前环境下,不需要这样做。我感谢您抽出时间