gpt4 book ai didi

PHP Regex删除字符后的所有内容

转载 作者:可可西里 更新时间:2023-11-01 12:40:38 25 4
gpt4 key购买 nike

所以我看过几篇有点太深入的文章,所以我不确定要从他们所做的正则表达式语句中删除什么。

我基本上明白了

foo:bar 一直到 anotherfoo:bar;seg98y34g.?sdebvw h segvu(一切正常)

我需要一个 PHP 正则表达式来删除冒号后的所有内容。第一部分可以是任意长度(但它从不包含冒号。所以在上面的两种情况下我都会以

fooanotherfoo

在做了类似这个可怕的伪代码示例之后

$string = 'foo:bar';
$newstring = regex_to_remove_everything_after_":"($string);

编辑

发布后,explode() 是否足够可靠?有点像

$pieces = explode(':', 'foo:bar') 
$newstring = $pieces[0];

最佳答案

explode会做你要求的,但你可以通过使用 current 一步到位.

$beforeColon = current(explode(':', $string));

我不会在这里使用正则表达式(涉及一些幕后工作以实现相对简单的操作),也不会使用 strpossubstr (因为那样会有效地遍历字符串两次)。最重要的是,这让阅读代码的人立即“啊,是的,这就是作者想要做的!”而不是“等等,又发生了什么?”

唯一的异常(exception)是,如果您碰巧知道该字符串过长:我不会分解 1 Gb 的文件。相反:

$beforeColon = substr($string, 0, strpos($string,':'));

我也觉得 substr 不太容易阅读:在 current(explode 中你可以立即看到分隔符,没有额外的函数调用,只有一个变量的事件(这使得它不太容易出现人为错误)。基本上我读 current(explode 作为“我正在处理这个字符串之前的任何事情的第一个事件”而不是 substr ,这是“我正在获取一个从 0 位置开始并一直持续到该字符串的子字符串。”

关于PHP Regex删除字符后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com