Php 从字符串中查找并替换特定数字

Php 从字符串中查找并替换特定数字,php,regex,preg-replace,Php,Regex,Preg Replace,如果有以下字符串(来自xml文件,也有空格): $string='1!' '; 你怎么能找到每一次 <wp:meta_value><![CDATA[xxx]]></wp:meta_value> 但只有在紧接着: <wp:meta_key><![CDATA[_thumbnail_id]]></wp:meta_key> 然后将该行中的数字替换为特定的数字 因此,最后字符串如下所示: $string

如果有以下字符串(来自xml文件,也有空格):

$string='1!'
';
你怎么能找到每一次

<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>';
$string='1!'
';

您可以使用
preg\u replace
。确保替换的是第1组的比赛,而不是整个比赛,但会执行您需要的操作


(?)\s*

认为你因为没有共享任何代码而遭到否决。你试过什么吗?也许加载DOM和迭代?
         $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>';