Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为不同的值替换字符串中的多个URL_Php_String - Fatal编程技术网

Php 为不同的值替换字符串中的多个URL

Php 为不同的值替换字符串中的多个URL,php,string,Php,String,我有一个具有多个href属性的文本字符串。我想用不同的链接替换它们 我已经“分解”了原始链接的数组和我想要替换的URL链接的数组。但我面临的问题是,我不知道如何用新值更新字符串 所以,用一种简单的方式 $sting1 = 'bla bla bla <a href="some_url">some text</a> bla bla bla <a href="some_url2">some text 2</a> bla bla bla <a hre

我有一个具有多个href属性的文本字符串。我想用不同的链接替换它们

我已经“分解”了原始链接的数组和我想要替换的URL链接的数组。但我面临的问题是,我不知道如何用新值更新字符串

所以,用一种简单的方式

$sting1 = 'bla bla bla <a href="some_url">some text</a> bla bla bla <a href="some_url2">some text 2</a> bla bla bla <a href="some_url3">some text 3 3</a>';
$sting1='blablablablablablablablablablablablablablablabla';
还有绳子

$sting_new = 'bla bla bla <a href="some_new_url">some text</a> bla bla bla <a href="some_new_url2">some text 2</a> bla bla bla <a href="some_new_url3">some text 3 3</a>';
$sting_new='blablablablablablablablablablablablablablablablablabla';

我知道我可以“分解”这个href并替换它们,但是如何为$sting1更新文本?

您可以使用两种方法。一种是使用,它只需要替换一个子字符串数组(或单个子字符串)和一个数组(或单个字符串)即可


另一种方法是类似的,使用,这类似于str_replace,只是它使用正则表达式

我认为最好的解决方案是使用正则表达式

<?php
$regex        = '/href="([^"]*)"/si';
$ori_string   = 'yourStringWithSomeHrefs';
$replacements = [
    'http://foo.bar',
    'relativeLink',
    // and so on
];

if(preg_match_all($regex, $ori_string, $m, PREG_OFFSET_CAPTURE)) {
    foreach($m[1] as $key => $value) {
        $ori_string = substr_replace($ori_string, $replacements[$key], $value[1], str_len($value[0]));
    }
}

我认为您应该提供一个实际示例,显示输入和预期输出。此外,如果您已经有了关于此的任何代码,您可能也希望共享。
str_replace
with array似乎更好地回答OP的问题,因为OP每次似乎都有不同的URL值。@JulienLachal您可能是对的!不过,我觉得展示其他可用选项并无害处:)