2016-08-31 6 views
1

私は完全に正規表現に新しく、問題に遭遇しました。段落の引用符検索を実行し、引用符を含む特定の文を返す方法

$paragraph = '<text start="90" dur="4">hello world</text><text start="94" dur="5">hello humans</text> 

$quote = 'hello world'; 

$ paragraphに$ quoteが含まれていることを確認してから、引用符の親要素ノードを返します。この場合の結果は次のようになります。

<text start="90" dur="4">hello world</text> 

この問題を解決する方法については、どのようなアイデアがありますか?

+0

まず、正規表現を使ってHTMLを解析しようとするときの問題を、これが発明された問題だから削除してみましょう。次に、この文脈で___full文章___が意味するものを明確に定義しましょう。この場合、完全な文章はHTMLの親ノードを意味しますか? – Sherif

+0

はい。 「完全な文章」には、タグが含まれています。 – Callum

+1

代わりに 'DOMDocument'と' xpath'を見てみましょう。 http://stackoverflow.com/questions/8689579/get-domelement-with-specific-text-php-xpath – Ghost

答えて

0

あなたは、単に正規表現文字列で$quoteを含め、文字通り、このように開口部/終了タグを入力することができます。

$regex = "<text start=\"[0-9]+\" dur=\"[0-9]+\">" . $quote . "<\\/text>"; 
+0

もしあれば構文エラーについて警告してください。私はPHPで 'Hello、World! 'と言うことさえできず、いくつかの文字列を連結するこのコードを書くためにPHPのドキュメンテーションを見ていなければなりませんでした。 – dorukayhan

-1
$paragraph = '<text start="90" dur="4">hello world</text><text start="94" dur="5">hello humans</text>'; 
$quote = 'hello world'; 

preg_match ("/<.*?$quote.*?>/", $paragraph, $return); 
$to_print = print_r($return, true); 
echo htmlspecialchars($to_print); 

これは何、それが引用する$「に<」からすべてのものをキャプチャしています'>'これは、あなたの見積もりがp、div、spanなどの間であれば、それらも同様に取り込むことを意味します。

。*?それは$ quoteの最初のインスタンスを読み込むまですべてをキャプチャすることを意味する怠惰です、そして、それはそれが戻ってくる '>'の最初のインスタンスを取得するまで他のものをすべてキャプチャします。

関連する問題