从字符串中查找并替换特定数字
Find and replace specific numbers from string
如果你有这个字符串(来自 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>';
您可以使用 preg_replace
。请确保您替换的是第 1 组匹配项而不是整个匹配项,但 this pattern 会按照您的需要执行。
(?<=<wp:meta_key><!\[CDATA\[_thumbnail_id\]\]><\/wp:meta_key>)\s*<wp:meta_value><!\[CDATA\[(\d+)\]\]><\/wp:meta_value>
如果你有这个字符串(来自 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>';
您可以使用 preg_replace
。请确保您替换的是第 1 组匹配项而不是整个匹配项,但 this pattern 会按照您的需要执行。
(?<=<wp:meta_key><!\[CDATA\[_thumbnail_id\]\]><\/wp:meta_key>)\s*<wp:meta_value><!\[CDATA\[(\d+)\]\]><\/wp:meta_value>