如果您有此字符串(来自xml文件,则包含空格):
$string = '<wp:postmeta>
<wp:meta_key><![CDATA[some_field]]></wp:meta_key>
<wp:meta_value><![CDATA[20]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key>
<wp:meta_value><![CDATA[53]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key>
<wp:meta_value><![CDATA[431]]></wp:meta_value>
</wp:postmeta>
</item>';
如何找到每次出现的
<wp:meta_value><![CDATA[xxx]]></wp:meta_value>
但只有在以下情况立即出现时:
<wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key>
然后用该行中的数字替换特定内容。
所以最后,字符串看起来像这样:
$string = '<wp:postmeta>
<wp:meta_key><![CDATA[some_field]]></wp:meta_key>
<wp:meta_value><![CDATA[20]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key>
<wp:meta_value><![CDATA[123456]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key>
<wp:meta_value><![CDATA[123456]]></wp:meta_value>
</wp:postmeta>
</item>';
答案 0 :(得分:0)
您可以使用preg_replace
。确保您要替换第1组比赛而不是整个比赛,但是this pattern会做您需要的事情。
(?<=<wp:meta_key><!\[CDATA\[_thumbnail_id\]\]><\/wp:meta_key>)\s*<wp:meta_value><!\[CDATA\[(\d+)\]\]><\/wp:meta_value>