1

テキストを取得する必要がある WP のキャプションがあります。

最初は、次のようになります。

[caption id="attachment_16689" align="aligncenter" width="754"]<a href="http://www.site.com/" target="_blank"><img class=" wp-image-16689 " title="Title" src="http://site.com/wp-content/uploads/2012/11/image.jpg" alt="" width="754" height="960" /></a> I want to get this text out of here.[/caption]

画像とタグを次のように取り除くことができます。

$c = preg_replace(array("/<img[^>]+\>/i", "/<a[^>]*>(.*)<\/a>/iU"), "", $caption); 

どの葉:

[caption id="attachment_16689" align="aligncenter" width="754"] I want to get this text out of here.[/caption]

「ここからこのテキストを取り出したい」を残して、キャプションからテキストを取り出したい。さまざまな表現を試しましたが、どれもうまくいきません。上記のコードの後、私は持っています:

preg_replace('/(\[caption.*])(.*)(\[/caption\])/', '$1$3', $c);

私は何を間違っていますか?

4

2 に答える 2

2

以下を参照してください。実際には、2 番目の主題に置き換えたいと考えています。また、エスケープされたバックスラッシュがいくつかありました。

$caption = '[caption id="attachment_16689" align="aligncenter" width="754"]<a href="http://www.site.com/" target="_blank"><img class=" wp-image-16689 " title="Title" src="http://site.com/wp-content/uploads/2012/11/image.jpg" alt="" width="754" height="960" /></a> I want to get this text out of here.[/caption]';

$c = preg_replace(array("/<img[^>]+\>/i", "/<a[^>]*>(.*)<\/a>/iU"), "", $caption);
$c = preg_replace('%(\\[caption.*])(.*)(\\[/caption\\])%', '$2', $c);

キャプションの置換を配列に追加することで、もう少し細くすることもできます。2番目の引数も配列であることを確認してくださいarray('','','$2')

$caption = '[caption id="attachment_16689" align="aligncenter" width="754"]<a href="http://www.site.com/" target="_blank"><img class=" wp-image-16689 " title="Title" src="http://site.com/wp-content/uploads/2012/11/image.jpg" alt="" width="754" height="960" /></a> I want to get this text out of here.[/caption]';

$c = preg_replace(array("/<img[^>]+\>/i", "/<a[^>]*>(.*)<\/a>/iU",'%(\\[caption.*])(.*)(\\[/caption\\])%'), array('','','$2'), $caption);
于 2012-11-27T19:51:22.587 に答える
1
$string = '[caption id="attachment_16689" align="aligncenter" width="754"] I want to get this text out of here.[/caption]';

preg_match("/\[caption.*\](.*?)\[\/caption\]/",$string,$matches);
$caption_text = $matches[1];
echo $caption_text;
于 2012-11-27T19:43:54.433 に答える