Php 为不同的值替换字符串中的多个URL
我有一个具有多个href属性的文本字符串。我想用不同的链接替换它们 我已经“分解”了原始链接的数组和我想要替换的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
$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您可能是对的!不过,我觉得展示其他可用选项并无害处:)