gpt4 book ai didi

php - 在第一个连字符之前隔离字符串的前导部分,并从匹配中省略任何尾随空格

转载 作者:搜寻专家 更新时间:2023-10-31 21:25:04 25 4
gpt4 key购买 nike

我有从字符串中提取标题的工作代码,但现在它仍然不是很灵活。

当前代码:

$post_title = "THIS IS A TEST - 10-01-2010 - HELLO WORLD (OKAY)!!";
$post_title = substr($post_title, 0, strpos($post_title, '-') - 1);

我想获取字符串的标题,它位于字符串的开头,一直到第一个破折号。我不想在破折号之前获取空格,可能根本就没有破折号。

当前代码的输出有效并输出THIS A TEST,但当前代码不适用于以下情况,因此我需要更灵活的代码:

  • 这是一个测试 - 10-01-2010 - HELLO WORLD(OKAY)!!
  • 这是一个 TEST-10-01-2010 - HELLO WORLD(好的)!!
  • 这是一个测试 - - - - 10-01-2010 - 你好,世界(好的)!!
  • 这是一个测试

因此标题可以没有 - 而有人可能会忘记在 - 之间放置一个空格,同样,有人可能会放置太多空格。

上述所有情况的输出应始终为 THIS A TEST,末尾没有空格。

根据我的代码,唯一有效的是第一个。

$title= explode('-', $post_title);
$post_title=trim($title[0]);
$trimmedTitle=$post_title;

$str = "THIS IS A TEST -0-01-2010 - HELLO WORLD (OKAY)!!";
preg_match("/^([\w\s]+)\s*-?/m", $str, $m);
print_r($m);

最佳答案

使用带有“-”作为分隔符的 explode() 根据“-”的存在将其分成 block ,然后获取第一部分并使用 trim() 修剪尾随空格以给出标题没有尾随空格。这会在所有提供的测试用例中给出“THIS IS A TEST”。如果没有破折号,则返回整个字符串。

<?php

$str = 'THIS IS A TEST - 10-01-2010 - HELLO WORLD (OKAY)!!';
$title= explode('-', $str);
$trimmedTitle=trim($title[0]);
print_r($trimmedTitle);

//$trimmedTitle ='THIS IS A TEST

?>

我已经针对以下方面进行了测试:

THIS IS A TEST - 10-01-2010 - HELLO WORLD (OKAY)!!
THIS IS A TEST-10-01-2010 - HELLO WORLD (OKAY)!!
THIS IS A TEST - - - - 10-01-2010 - HELLO WORLD (OKAY)!!
THIS IS A TEST

并且每个返回 THIS IS A TEST 没有尾随空格

关于php - 在第一个连字符之前隔离字符串的前导部分,并从匹配中省略任何尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38032489/

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