2017-09-03 8 views
1

私はfile_get_contents()で働いていると私は、このような構造一部のHTML文字列を取得します:各オプションタグ内のテキストの後半部分を削除するにはどうすればよいですか?

$html = " 
<select> 
    <option>I need this part 1/ I don't need this 1 </option> 
    <option>I need this part 2/ I don't need this 2 </option> 
    <option>I need this part 3/ I don't need this 3 </option> 
    ... 
    <option>I need this part 50/ I don't need this 50 </option> 
</select>"; 

は、私はすべての/ I don't need this [n]を取り除きたいです。

どうすればいいですか?

+0

ご質問や今後の作業が不明です。実際にどのような結果が得られているのかを正確にしてください。マークアップのどの部分を保存し、何を落とすべきかが正確に定義されています。 – arkascha

+0

Stack Overflowへようこそ(ここではウェルカムツアー)(https://stackoverflow.com/tour)にアクセスして、ここであなたの道を知る(また、最初のバッジを獲得する)、[作成する最小限で完全で検証可能な例](https://stackoverflow.com/help/mcve)を参照してください。また、[How to Ask Good Questions](https://stackoverflow.com/help/how-to-ask)もチェックしてください。あなたはフィードバックと有用な答えを得る機会を増やします。 –

+0

それ以外は:このサイトの仕組みを学んでください。 SOは無料のコーディングサービスではありません。私たちはあなたのためにあなたの仕事をするためにここにいません。私たちはあなた自身であなたの仕事を解決しようとしているときに遭遇する問題を解決するのを手助けするためにここにいます。そのためには、自分で実際に試したコードを表示する必要があります。それ以外にどんなことができるのでしょうか? – arkascha

答えて

2

コード:(Demo)パターン区切り文字として

$html = " 
<select> 
    <option>I need this part 1/ I don't need this 1 </option> 
    <option>I need this part 2/ I don't need this 2 </option> 
    <option>I need this part 3/ I don't need this 3 </option> 
    ... 
    <option>I need this part 50/ I don't need this 50 </option> 
</select>"; 

echo $html=preg_replace('~/.*<~','<',$html); 
  • 使用~はあなたの正規表現内のスラッシュをエスケープする必要はありませんように。
  • あなたは(パターンの最後にsフラグを使用して)にして、不要な部分文字列のいずれかが含まれている場合、それを教えてくれない限り、ドットは、新しい行に行くことはありませんので、.貪欲をする必要がありますすることができます<これはあなたのhtmlテキストがマングルから保護されます。
  • キャプチャグループを使用しないでください。パターンが遅くなり、置換文字列にキャプチャ参照が使用されていないためです。

出力:

パターン:あなたの不要な部分文字列が<が含まれていない場合

<select> 
    <option>I need this part 1</option> 
    <option>I need this part 2</option> 
    <option>I need this part 3</option> 
    ... 
    <option>I need this part 50</option> 
</select> 

最後に、次のパターン&置換テキストは、はるかに私の上記の方法をアウトパフォームします:~/[^<]+</~ 交換:</ Regex Demo

関連する問題