在 php 中组合重叠字符串序列的内置函数?

2024-01-01

PHP 中是否有内置函数可以将 2 个字符串合并为 1 个?

Example:

$string1 = 'abcde';
$string2 = 'cdefg';

合并可得:abcdefg.

如果确切的重叠序列和位置已知,则可以编写代码来合并它们。


我发现 substr_replace 方法返回有趣的结果。 特别是在使用 url 字符串时。我刚刚写了这个函数。 它似乎非常适合我的需求。 默认情况下,该函数将返回最长的可能匹配。

function findOverlap($str1, $str2){
  $return = array();
  $sl1 = strlen($str1);
  $sl2 = strlen($str2);
  $max = $sl1>$sl2?$sl2:$sl1;
  $i=1;
  while($i<=$max){
    $s1 = substr($str1, -$i);
    $s2 = substr($str2, 0, $i);
    if($s1 == $s2){
      $return[] = $s1;
    }
    $i++;
  }
  if(!empty($return)){
    return $return;
  }
  return false;
}

function replaceOverlap($str1, $str2, $length = "long"){
  if($overlap = findOverlap($str1, $str2)){
    switch($length){
      case "short":
        $overlap = $overlap[0];
        break;
      case "long":
      default:
        $overlap = $overlap[count($overlap)-1];
        break;
    }     
    $str1 = substr($str1, 0, -strlen($overlap));
    $str2 = substr($str2, strlen($overlap));
    return $str1.$overlap.$str2;
  }
  return false;
}

获取最大长度匹配的用法:

echo replaceOverlap("abxcdex", "xcdexfg"); //Result: abxcdexfg

要获取第一个匹配项而不是最后一个匹配项,请像这样调用函数:

echo replaceOverlap("abxcdex", "xcdexfg", “short”); //Result: abxcdexcdexfg

要获取重叠的字符串,只需调用:

echo findOverlap("abxcdex", "xcdexfg"); //Result: array( 0 => "x", 1 => "xcdex" )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 php 中组合重叠字符串序列的内置函数? 的相关文章

  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • 自定义帖子类型的 WordPress 自定义字段

    过去有几个人出现过这个问题 但他们的问题的解决方案对我来说不起作用 我已经尝试了很多 在 WordPress 中 我创建了 3 种自定义帖子类型 1 代表 视频 新闻 和 音乐 每个内容都发布到自己的页面 我想添加自定义字段 这样我就可以为
  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • Laravel/00webhost 错误 404。在此服务器上找不到请求的 URL

    1 将我的文件上传到 000webhost 我将公用文件夹中的所有文件放置到公共 html然后我创建了一个名为laravel我在那里上传了所有其他文件 这是我的目录结构 laravel app 引导程序 config 公共 html 索引
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • 带 url 参数的 Laravel post 路由

    我面临着幼虫路由的大墙 我似乎找不到解决方案 我在视图模板中有此表单
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • 如何在同一 PHP 页面上多次使用 mysqli fetch_assoc() 和准备好的语句?

    有没有办法启用fetch assoc 在同一页上多次使用准备好的语句 data conn gt prepare SELECT FROM some table WHERE id data gt bind param i id data gt
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • 为什么这评估为 true

    为什么这评估结果为真
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子

随机推荐

  • 这是“十分之一”的重写时间吗?

    如果可以避免的话 我非常反对重写应用程序 我理解这样的规则 十分之九 最好进行重构 但我所处的情况可能是十分之一 我正在寻找这条线 目前的情况是 我接手了一个 VB6 SQL 应用程序的维护 总代码行数为 75 100k 代码隐藏 模块和类
  • Haskell 运算符与函数优先级

    我正在尝试为自己验证一些关于 Haskell 中运算符和函数优先级的内容 例如下面的代码 list map foo xs 可以重写为 list map foo xs 并且最终将是 list map foo xs 我曾经的问题是 为什么第一个
  • C语言中的UDP广播

    当我通过下面的代码广播消息时 主机上的服务器也收到该消息 如何防止主机接收其发送的消息 是否可以更改代码上的某些内容 或者使用类似的内容会更好if strcmp hostIP IP of the package 0
  • 如何使用 Java 和 XmlSchema Core 解析 XSD 并读取所有复杂元素及其子元素

    我正在使用Apache XmlSchema Core库来解析XSD文件并获取所有元素及其子类型 数据类型 maxOccurs 等 我正在关注文档Apache XML 架构核心 http ws apache org xmlschema xml
  • 我想用 Proguard 混淆 AndroidManifest.xml

    我可以使用 Proguard 混淆 AndroidManifest xml 文件吗 我想在我的 proguard config 文件中写入源代码 adaptresourcefilenames AndroidManifest xml 但这没用
  • 进度条会减慢应用程序速度吗?

    当我有进度条时 与没有进度条的启动相比 我的应用程序启动需要更长的时间 有可能吗 或者这只是视觉效果 我想 并且也注意到 进度条的创建和修改需要一些时间 时间开销对于长时间运行的操作不太重要 但对于短时间操作 几秒 来说很明显 然而 我更喜
  • 共享元素活动过渡动画中的 Z 顺序

    我正在使用与此类似的代码制作一些基本的共享元素活动转换动画 Intent i new Intent AnActivity this AnotherActivity class ActivityOptionsCompat options Ac
  • Opentok 屏幕共享音频

    我尝试使用 opentok JS 客户端创建一个屏幕共享应用程序 该应用程序也共享发布者的音频 屏幕共享工作正常 但音频从未被共享 现在 我注意到控制台 Firefox 中有一条警告说Invalid audioSource passed t
  • Jupyter nbconvert LaTex 导出主题

    我正在使用 Jupyter Notebook nbconvert 另存为菜单 通过 Latex 导出为 pdf 然而 pdf 文件的状态并不好 例如 一些宽表显示得很好 我希望有一个用于将表格大小调整为页面宽度的框 是否有任何样式 模板可以
  • 循环遍历 Android 视图的所有子视图?

    我正在开发一款 Android 游戏 为了帮助实现它 我的想法是创建视图的子类 然后 我将插入此类的几个实例作为主视图的子视图 每个实例都会处理按下时的检测 通过 OnTouchListener 我现在遇到的问题是如何循环遍历所有这些子视图
  • 获取 org.elasticsearch.transport.NodeDisconnectedException:[][inet[localhost/127.0.0.1:9300]][cluster/nodes/info] 已断开连接

    我是 Elastic Search Java Api 5 0 的新手 我正在使用elasticsearch 5 0 0 我尝试使用 Spring Boot 创建一个 Java 应用程序 Maven 运行应用程序后 显示 2016 11 04
  • 在heroku上的设计设置中找不到ENV['SECRET_KEY']

    这个要点不对您的密钥进行版本控制 https gist github com cjolly 6265302太棒了 我已经使用它几次了 不再对我的 Rails 密钥库进行版本控制 我尝试将它用于heroku 上的设计secret key 但我
  • 寻找比 GDI 更快的解决方案来渲染动态数据图

    我使用 C CLI 编写了一个简单的基于 GDI 的数据绘图仪 但它不是特别快 一些基本分析表明问题在于屏幕渲染 有没有办法为 UserControl 启用硬件加速 或者是否有用于 direct3D 的 net 接口 或者我可以考虑其他一些
  • Angular - ui-router 获取之前的状态

    有没有办法获取当前状态的先前状态 例如 我想知道当前状态 B 之前的前一个状态是什么 其中前一个状态是状态 A 我无法在 ui router github 文档页面中找到它 在移动到新状态之前 我使用解析来保存当前状态数据 angular
  • 我的 CREATE View 查询中不需要锁定吗

    我正在 MS SQL Server 上创建一个视图 我对 MS SQL 没有太多接触 并且不太熟悉 NO LOCK 提示 我明白它的作用 但我不知道我是否需要在我的情况下使用它 有人问我是否应该包括它 但我不知道 我是否需要在用于创建视图的
  • 将 Spark DataFrame 列转换为 Python 列表

    我处理一个有两列的数据框 mvv 和 count mvv count 1 5 2 9 3 3 4 1 我想获得两个包含 mvv 值和计数值的列表 就像是 mvv 1 2 3 4 count 5 9 3 1 所以 我尝试了以下代码 第一行应该
  • Ironpython调用numpy问题

    铁蟒2 6 蟒蛇2 6 5 麻木 科学Py import sys sys path append r D Python26 dll sys path append r D Python26 Lib sys path append r D P
  • 为什么 Maven 报告“校验和验证失败,存储库中没有可用的校验和”?

    我正在尝试使用此处描述的 3 个步骤创建自定义 Maven 存储库 http www javaworld com community node 3968 http www javaworld com community node 3968
  • scikit-learn 中奇怪的 SVM 预测性能 (SVMLIB)

    我在 10000x1000 的大型数据集 10000 个对象 1000 个特征 上使用 scikit learn 的 SVC 我已经在其他来源中看到 SVMLIB 的扩展范围不能超过约 10000 个对象 我确实观察到了这一点 traini
  • 在 php 中组合重叠字符串序列的内置函数?

    PHP 中是否有内置函数可以将 2 个字符串合并为 1 个 Example string1 abcde string2 cdefg 合并可得 abcdefg 如果确切的重叠序列和位置已知 则可以编写代码来合并它们 我发现 substr re