2017-08-06 22 views
-1

私は新しい文字列として削除部分文字列を保存することができますどのようにpreg_replace preg_replaceで一致する部分文字列を取得する方法は?

として
$html = preg_replace('#<p>(.*?)</p>#i', '', $html, 1); 

で文字列内のhtmlタグの最初の発生を削除します。あなたが使用できる部分文字列を取得するために

$deleted = '<p>...</p>'; 
+1

のDOMDocument :: removeChildの –

+0

@Allカシミールさんのコメントがベストプラクティスです。 html文字列を処理するためにhtmlパーサーを使用するのが最も信頼できます。最良の結果を得るには、彼のアドバイスを活用する方法を研究し開発する時間を取るべきです。 – mickmackusa

答えて

0

preg_match()

preg_match('#<p>(.*?)</p>#i', $html, $matches); 

ちょうど$は、それはあなたが必要なものを含んで変数と一致して確認してください。

一致が指定されている場合は、検索結果が入力されます。 $ matches [0]にはフルパターンに一致するテキストが含まれ、 $と一致すると1には最初に取り込まれた の小括弧付きサブパターンと一致するテキストがあります。

タグを削除する場合は、その後にpreg_replaceを使用してください。

しかし、あなたは唯一の<p>タグを削除し、ちょうどpreg_replaceこのような部分文字列を保持する場合:

$html = "left <p>substring</p> right"; 
$html = preg_replace('#</?p>#i', '', $html); 

echo $html; 

出力:

left substring right 
+0

私はこの正確な答えを投稿しましたが、いくつかの下降音がありました。このサイトは時々騒がしくなることがあります! – madscientist159

+0

確かに、時には人々は奇妙です:/ – yoeunes

0

は、使用してみてください:

どう
$result = preg_match('#<p>(.*?)</p>#i', $html); 
+1

あなたは何の質問に答えていますか? 'preg_match'はブール値を返します。何をやっていますか? – Toto

1

その一致をユーザdに渡すpreg_replace_callbackの使用についていいえ。

$str = preg_replace_callback($re, function ($m) use (&$p) { $p = $m[0]; }, $str, 1); 
  • $m指数0は、(参照によって渡された)一致を記憶するための任意の変数名の完全なパターンマッチ
  • use(&$p)あるマッチアレイの任意の変数の名前。

See this demo at eval.in

関連する問題