-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

編集:

実際の例...

<?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 に答える
1

/文字が常にの末尾に表示される場合は、2番目の(オプションの)パラメーターを$search使用して使用できます。rtrim

$search = "search keywords////////////////////////////////////////////////";
$search = rtrim($search, '/ ');
echo $search; // prints 'search keywords'
于 2012-09-28T09:08:37.340 に答える
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 に答える