2016-09-30 8 views
0

HTMLの文字列からテキスト文字列を取得しようとしています。 タグ間のテキストのみをキャプチャし、空のタグをスキップしたいと思います。preg_matchを使用してHTMLで中国語のテキストを検索

私の試みは、現在の試みがここで見つけることができますされています
私は漢字

  • をキャプチャする必要があるので、私はテキストのみのない多くのことを希望ワット\私が使用することはできません https://regex101.com/r/3Ujmw6/2

    • 空の結果

    は、私が試してみました:

    />(\X+?)</g 
    
    //I will fail on nested tags, it capture the first nested tag 
    <p><strong>blablab</strong></p> 
    

    そして、この:

    />(\X*?)</g 
    
    //Finds me all the string, but also includes loads of empty strings 
    //for adjacent tags >< 
    

    \ Xから<を排除する方法はありますか?または、テキスト部分のみを返すようにこれを書き込む方が良いでしょうか?

  • +1

    あなたがutf-8を使っているなら、 '\ w'が中国語をサポートしていることは間違いありません。それでも、RegExpを使ってHTMLを解析しようとするべきではありません。それは、仕事にとって間違ったツールです。代わりにDOMDocument()のようなものを使用してください。 – CD001

    +0

    私が使用しているregexpサイトの制限でない限り、\ wで動作させることができませんでした。 domcrawlerの提案のおかげで、それをテキストノードのクロールに使用することは考えていませんでした。そのソリューションにピボットされます。 –

    +0

    この関数['strip_tags()'](http://php.net/manual/en/function.strip-tags.php)が役立つかもしれません。 – revo

    答えて

    0

    >(\s*[^\s<][^<]*) 
    

    これは、単純にすべての空白ではありません><の間のすべてのテキストにマッチするような正規表現を試してみてください。 https://regex101.com/r/3Ujmw6/4を参照してください。

    +0

    CD001のコメントに基づいて、私は代わりにDomCrawlerを使いましたが、あなたの答えは私が求めたものとまったく同じです。 –

    関連する問題