This proof is an extended version of the nice proof proposed by
**Stromael** and it serves best for beginners who want to understand every detail(that one that for any established mathematician logically seems trivial) of the proof.

$ \textbf{Proof:} $

Let $U \subseteq \mathbb{R}$ be open and let $x \in U$. Then Either $x$ is rational or $x$ is irrational.

Suppose $x$ is rational, then define

\begin{align} I_x = \bigcup\limits_{\substack{I\text{ an open interval} \\ x~\in~I~\subseteq~U}} I,\end{align}

**Claim**: $I_x$ is interval, $I_x$ is open and $ I_x \subseteq U $

**Definition:** An interval is a subset $ I \subseteq \mathbb{R}$ such that, for all $ a<c<b$ in $\mathbb{R}$, if $ a,b \in I $ then $ c \in I$.

Now, consider any $ a<c<b $ such that $ a,b \in I_x$. We want to show that $ c \in I_x $.

Denote $I_a $ to be an interval such that $ x \in I_a $ and $ a \in I_a $. In other words $ I_a $ is one of the intervals from the union $ I_x $ that contains $a$. In the same way, let $ I_b $ be the interval such that $ x \in I_b $ and $ b \in I_b $.

$ c=x $: If $c=x$ then by construction of $I_x$, $ c \in I_x$

$ c<x $: If $c<x$ then we have that either $ a<c<x<b $ or $ a<c<b<x $. Since $ x \in I $ for every open interval $I$ of the union $I_x$ (by construction of $I_x$ ), we have that $x \in I_a $ and $ x \in I_b$. Since $ x \in I_a $ then because $ I_a $ is an interval $ c \in I_a$ and hence $ c \in I_x $. And since $ x \in I_b $ then because $ I_b $ is an interval $ c \in I_b $ and hence $ c \in I_x $. Thus, we concluded that $ c \in I_x $.

$ c > x $: If $ c>x $ then we have that either $ a<x<c<b $ or $ x<a<c<b $. Since $ x \in I $ for every open interval $I$ of the union $I_x$ (by construction of $I_x$ ), we have that $x \in I_a $ and $ x \in I_b$. Since $ x \in I_b $ then because $ I_b $ is an interval $ c \in I_b $ and hence $ c \in I_x $. As for the second case, note that since $ x \in I_b$ we have that $ a \in I_b $. But then, because $ I_b $ is an interval we have that $ c \in I_b $ and hence $ c \in I_x$. Hence we concluded that $ c \in I_x $.

This Proves that $ I_x $ is an interval.

$ I_x $ is open because it is union of open sets.

$ I_x \subseteq U $ by construction.

Suppose $x$ is irrational, then by openness of $ U $ there is $\varepsilon > 0$ such that $(x - \varepsilon, x + \varepsilon) \subseteq U$, and by the property of real numbers that for any irrational number there exists a sequence of rational unmbers that converges to that irrational number, there exists rational $y \in (x - \varepsilon, x + \varepsilon) $. Then by construction $ (x - \varepsilon, x + \varepsilon) \subseteq I_y $. Hence $x \in I_y$. So any $x \in U$ is in $I_q$ for some $q \in U \cap \mathbb{Q}$, and so

\begin{align}U \subseteq \bigcup\limits_{q~\in~U \cap~\mathbb{Q}} I_q.\end{align}

But $I_q \subseteq U$ for each $q \in U \cap \mathbb{Q}$; thus

\begin{align}U = \bigcup\limits_{q~\in~U \cap~\mathbb{Q}} I_q, \end{align}

which is a countable union of open intervals.

Now let's show that intervals $ \{I_q \} ~\ q \in U \cap \mathbb{Q} $ are disjoint. Suppose there is $ i, j, \in U \cap \mathbb{Q} $ such that $ I_i \cap I_j \neq \emptyset $ then $ I_i \subseteq I_q $ and $ I_j \subseteq I_q $ for some $ q \in U \cap \mathbb{Q} $

Hence we constructed disjoint intervals $ \{I_q \} ~\ q \in U \cap \mathbb{Q} $ that are enumerated by rational numbers in $U$ and whose union is $U$. Since any subset of rational numbers is countable, $ \{I_q \} ~\ q \in U \cap \mathbb{Q} $ is countable as well. This finishes the proof.