Сравнение строковых значений if HTML / PHP с пробелами

#php #html #regex

#php #HTML #регулярное выражение

Вопрос:

У меня возникли проблемы при сравнении этих двух строк, я не совсем уверен, что происходит, но когда значения содержат пробелы, а равенство должно быть истинным, возвращается false , хотя для строк без пробелов это работает безупречно.

У меня есть подлое чувство, что для NBSP должно быть какое-то предварительное значение или что-то в этом роде, но я просто совершенно не понимаю, что делать… В строке, на которую я ссылаюсь, будут звездочки.

     function getRecords($column,$table){

        $options = "";

            if(isset($_POST['submit'])) {
                $selected = $_POST[$column];
            }       

        $query = "SELECT DISTINCT $column FROM $table ORDER BY $column ASC";
        $result = mysql_query($query);

        if(!$result) {
            $options = "<option>Error Retrieving Records</option>n";;
        }

        else {
            while($row=mysql_fetch_assoc($result)) {
                $value = $row[$column];

                $options .= "<";
                    $options .= "option value=";
                        $options .= $value;
  

исправления здесь, спасибо ridgerunner!

                     $options .= "option value=""; 
                    $options .= $value.""";
  

     //define selected value if it exists        
                    if(isset($selected)) {
***************         if($selected==$value) {
                            $options .= " selected";
                        }
                            $options .= "";
                    }
                $options .= ">";
                $options .= $value;
                $options .= "</option>n";
            }
        }

        return $options;
    }
  

Комментарии:

1. Распечатайте результаты selected и value , и вы легко сможете увидеть, где находится несоответствие.

2. Пожалуйста, предоставьте print_r() подробную информацию о значении $. Кроме того, $selected определяется только в том случае, если задан $_POST[‘submit’].

Ответ №1:

Вам нужно заключить OPTION значение атрибута в кавычки. Вместо:

 $options .= "option value=";
  

Используйте:

 $options .= "option value="";
  

И проделайте то же самое с закрывающей кавычкой. И на всякий случай вы также можете захотеть преобразовать любые двойные кавычки внутри $value в amp;quot; .

Комментарии:

1. Боже мой, ты решил это! В моем коде это выглядит немного странно… но это работает! $options .= "option value=""; $options .= $value.""";