PHP使用偏移量和长度替换多个字符串

约翰

我有一个像这样的字符串:

梨和橙子很好吃。你更倾向哪个?梨还是橘子?

我需要在末尾替换“ Pear”和“ Orange”字符串,并将它们包装在链接中。我有以下JSON格式的信息:

"string": "The Pear and Orange are tasty. Which one do you prefer? Pear or Orange?",
"links": {
"55": [
   {
      "url": "http://example.com/pear",
      "name": "Pear",
      "offset": 55,
      "length": 4
   }
],
"63": [
   {
      "url": "http://example.com/orange",
      "name": "Orange",
      "offset": 63,
      "length": 6
   }
]

我想使用偏移量和长度来替换字符串,而不是依赖名称,因为主字符串可能包含单词的多次出现。

我尝试过的

1)我尝试使用foreach循环遍历JSON中的链接,并使用substr_replace替换它们,但是在第一个循环之后,偏移量不准确,因为我已经用链接替换了第一个字符串,这增加了长度原始字符串的20-30个字符。

2)然后,我尝试将替换,偏移和长度数组传递给substr_replace,以尝试一次替换所有字符串,但是由于原始字符串不是数组格式,所以它不起作用,它只是一个普通字符串。

有人对我有什么想法或建议吗?当我拔出头发时,任何帮助将不胜感激。看起来很简单,但我还不太明白!

非常感谢,

约翰

尼科

您的第一个直觉是正确的。您需要做的唯一更改是使for循环从最后一个条目开始,然后向后循环,而不是相反。这将起作用,因为仅当您更改字符串中该单词之前的内容时,单词的偏移量才会更改

for($i = count($links)-1; $i >= 0; $i--) {
    str_replace( ... );
}

上面的方法要求根据链接的偏移量对链接进行排序,但是,最高偏移量排在数组的最后。如果未对链接进行排序,则必须首先执行该操作。但是,如果您需要对数组进行排序,则最好对它们进行排序,以使最高偏移量排在最前面,然后以正常方式遍历数组。

例如:

$links = array(
    array( 'name' => 'Pear', 'offset' => 55 ),
    array( 'name' => 'Orange', 'offset' => 63 ),
    array( 'name' => 'LAST', 'offset' => 0 ),
    array( 'name' => 'MIDDLE', 'offset' => 60 ),
    array( 'name' => 'FIRST', 'offset' => 1000)
);

function mySort($a, $b) {
    return $b['offset'] - $a['offset']; // Sorts elements with higher offset first
}

usort($links, 'mySort');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP使用偏移量和长度来替换多个字符串

来自分类Dev

PHP多个字符串替换

来自分类Dev

根据两个字符串的偏移量删除一段文本

来自分类Dev

根据两个字符串的偏移量删除一段文本

来自分类Dev

PHP非法字符串偏移量错误

来自分类Dev

PHP警告-非法的字符串偏移量

来自分类Dev

警告:字符串偏移量'todo'| 的PHP

来自分类Dev

PHP-数组-非法的字符串偏移量

来自分类Dev

PHP中的非法字符串偏移量错误

来自分类Dev

使用可变偏移量分割字符串

来自分类Dev

如何使用UTC偏移量转换字符串

来自分类Dev

使用Visual Studio IDE搜索多个字符串查找和替换

来自分类Dev

如何使用sed来查找和替换具有多个字符串的模式?

来自分类Dev

VIM-如何使用领导者搜索和替换多个字符串?

来自分类Dev

如何使用str_replace替换PHP中的多个字符串?

来自分类Dev

如何使用str_replace替换PHP中的多个字符串?

来自分类Dev

如何通过Javascript获取句子中选定的字符串偏移量开始和偏移量结束

来自分类Dev

带有 float 和 int 字符串的非法字符串偏移量

来自分类Dev

从字符串中替换多个字符,而不使用任何嵌套的替换功能

来自分类Dev

替换多个文件中的多个字符串

来自分类Dev

如何替换字符串中的多个字符?

来自分类Dev

用多个字符替换字符串

来自分类Dev

用多个字符替换字符串

来自分类Dev

用多个字符替换字符串

来自分类Dev

替换字符串中的多个字符

来自分类Dev

使用替换矩阵一次替换多个字符串

来自分类Dev

如何使用 PowerShell 替换正确替换给定文件中的多个字符串

来自分类Dev

PostgreSQL中的多个字符串替换

来自分类Dev

用列表替换多个字符串

Related 相关文章

热门标签

归档