-1

我的网站有一个奇怪的问题,我有一个记录所有搜索并将这些搜索词插入数据库的脚本,问题是由于搜索引擎机器人开始在我的网站周围偷偷摸摸,他们让我的脚本产生搜索关键字,如“搜索关键字//////////////////////////////////////// “我想在 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 ”将调用搜索词,我不知道我必须使用什么剥离语法来剥离那个讨厌的 ///////// 字符。

编辑:创建单词的代码是这样的:

$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];
4

5 回答 5

1

使用 MySQL TRIM函数从字符串末尾删除,如下所示:

TRIM(TRAILING '/' FROM <string>)

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

要从开头和结尾修剪,请使用以下

TRIM(BOTH '/' FROM <string>)

@mysql_query("insert into tag (baslik,tr,tarih) 
values (TRIM(BOTH '/' FROM '$search'),'$ekle',now())")

要删除所有出现的字符串,请使用REPLACE函数,如下所示:

REPLACE(<string>, '/', '')

@mysql_query("insert into tag (baslik,tr,tarih) 
values (REPLACE('$search', '/',''),'$ekle',now())")

希望能帮助到你...

于 2012-09-28T09:07:20.783 回答
1

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

$search = "search keywords////////////////////////////////////////////////";
$search = rtrim($search, '/ ');
echo $search; // prints 'search keywords'
于 2012-09-28T09:08:37.340 回答
1

编辑:

真实的例子...

<?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>

测试链接: http: //simplestudio.rs/tsto.php

至少做:

$search = mysql_real_escape_string($search);

您也可以检查该字符,如果找到,只需用空字符串替换它们。

$ser_chk = strpos($search, "/");
if ($ser_chk > -1) {
$search = str_replace("/", "", $search);
}
于 2012-09-28T09:04:12.300 回答
0
$regex = "/\//";
$string = "////search";
$string = preg_replace($regex, '', $string);

echo $string;
于 2012-09-28T09:03:49.153 回答
0

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

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

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

于 2012-09-28T09:16:31.027 回答