-1

私はそのような単純なコードを得ました:

    private function edit_keywords($text)
{
    $tresc = str_replace("\n","",$text);
    $tresc = str_replace("\r","",$text);
    if(strpos($text,'"')!==FALSE)
    {
        array_push($this->warnings,"Not allowed character found in keywords \".");
        return;
    }

現在、これは入力されないように、ブロックしたいもブロックします。これを行う方法は?

' を置き換えても問題ありません。

4

2 に答える 2

0

これを試して :

<?php

private function edit_keywords($text)
{
    $tresc = str_replace("\n","",$text);
    $tresc = str_replace("\r","",$text);

    if ((strpos($text,'"')!==FALSE)||(strpos($text,"'")!==FALSE))
    {
        array_push($this->warnings,"Not allowed character found in keywords \".");
        return;
    }

?>
于 2012-04-25T13:17:07.027 に答える
-1

二重引用符 ( ) を使用するか、単一引用符をエスケープして、単一引用符の 2 番目のstrposチェックを作成できます。"'"'\''

if(strpos($text,'\'')!==FALSE)
{
    array_push($this->warnings,"Not allowed character found in keywords \".");
    return;
}

if最終的に、新しいステートメントを継続的に追加するのではなく、テストしたいすべての文字を配列に格納し、それらを反復処理したい複雑さのレベルに達する可能性があります。

$bad_chars = array('"', '\'');

foreach ($bad_chars as $bad_char) {
  if (strpos($text, $bad_char) !== false) {
    array_push($this->warnings,"Not allowed character found in keywords \".");
    return; # or break, to stop after the first disallowed characte
  }
}
于 2012-04-25T13:16:45.847 に答える