PHP7封装了str_ends_with, phper看了都说好

本文介绍了在PHP8以下版本如何通过自定义函数模拟str_starts_with和str_ends_with功能,利用mb_strlen和mb_substr进行多字节安全的字符串判断。示例代码展示了如何检查字符串是否以指定子字符串开始或结束,并给出了具体实现的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

str_ends_withstr_starts_with)的作用:检查字符串是否以给定的子字符串结尾(开头)
PHP8 里面有自带的函数,可以直接使用

str_ends_with

str_starts_with

我想着 PHP8 以下的都没有,那不行,得加上。

php7 主要逻辑是获取字符串来判断和预查询的字符串是否相同。

其中 mb_substr($str,$start,$length,encoding=mb_internal_encoding()) 根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

下面是我的示例代码

$a = '品斯顿dfasdfasdfas';

function startWith($haystack,$needle){
	$len = mb_strlen($needle);
    return mb_substr($haystack, 0, $len) === $needle;
}

function endWith($haystack,$needle){
	$len = mb_strlen($needle);
    return mb_substr($haystack, -1, $len) === $needle;
}
// 输出:bool(true)
var_dump( startWith($a,'品') );
<think>嗯,用户问的是“UF_DRF_ask_ann_line_seg_ends”,看起来这是一个特定的API函数或者模块名称。首先,我需要确定这个术语的来源和所属的软件环境。常见的可能包括Siemens NX的User Function(UF)API,因为“UF_DRF”前缀在NX二次开发中常见,DRF可能代表Drafting或Dimensioning相关功能。 接下来,分解术语各部分:“UF_DRF”通常是NX Open API中的命名空间或模块前缀,用于制图或标注相关功能。“ask_ann_line_seg_ends”可能是一个查询(ask)注释线段的端点(line segment ends)的函数。因此,这个函数可能是用来获取注释线(如尺寸线、注释线)的起点和终点坐标的。 需要验证这个函数是否存在。查阅NX Open API文档或头文件,比如查找函数声明,如UF_DRF_ask_ann_line_seg_endpoints或类似名称。假设存在这样的函数,其参数可能包括注释对象的标识符,以及用于返回两个端点坐标的结构体或数组。 然后,考虑用户的使用场景。可能是进行NX二次开发时需要获取注释线的端点信息,用于自动化处理或修改标注。用户可能遇到如何正确调用该函数的问题,或者需要了解其输入输出参数、返回值类型等。 另外,要注意函数的具体行为,例如是否适用于所有类型的注释线,或者是否有特定的前提条件(如必须选中有效的注释对象)。可能的错误处理,比如传入无效对象时的返回值或错误码。 最后,整理信息,用清晰的结构解释函数的作用、参数、返回值、使用示例及注意事项,帮助用户正确使用该函数。</think>根据您提到的`UF_DRF_ask_ann_line_seg_ends`,这可能是 Siemens NX 软件中与二次开发相关的 API 函数。以下为逐步分析: 1. **术语解析**: - **`UF_DRF`**:属于 NX Open API 的命名空间,通常用于制图(Drafting)模块功能。 - **`ask_ann_line_seg_ends`**:函数名,推测用于查询(ask)注释线(annotation line)的线段端点(segment ends)。 2. **功能推测**: - 此函数可能用于获取 NX 制图环境中注释线(如尺寸标注线、注释引线等)的起点和终点坐标。 - 输入参数可能包含注释线的对象标识符(`tag_t` 类型),输出参数可能为两个点的三维坐标。 3. **典型使用场景**: ```c #include <uf_drf.h> int UF_DRF_ask_ann_line_seg_ends( tag_t ann_line_tag, // 注释线对象标识符 double start_point[3], // 起点坐标(输出参数) double end_point[3] // 终点坐标(输出参数) ); ``` - 返回值为整型状态码(0 表示成功,非零表示错误)。 4. **注意事项**: - 需确保传入的 `ann_line_tag` 是有效的注释线对象。 - 部分注释线可能包含多个线段(如折线),此函数可能仅返回首尾端点。 - 开发前需验证 NX 版本兼容性(不同版本 API 可能略有差异)。 5. **参考资料**: - 建议查阅 Siemens NX Open API 文档(路径:NX帮助 → NX Open → API Reference → UF_DRF)。 - 示例代码可参考 NX 安装目录下的 `Open API Sample` 项目。 若需进一步验证具体参数或获取代码示例,请提供 NX 版本及开发环境信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值