Art*_*hor 4 php string text-extraction substring
我有我的工作代码,它从字符串中提取标题,但现在它仍然不是很灵活。
当前代码:
$post_title = "THIS IS A TEST - 10-01-2010 - HELLO WORLD (OKAY)!!";
$post_title = substr($post_title, 0, strpos($post_title, '-') - 1);
Run Code Online (Sandbox Code Playgroud)
我想获取字符串的标题,该标题位于字符串的开头,直到第一个破折号。我不想在破折号之前获得空格,并且可能根本没有破折号。
当前代码的输出有效并且输出THIS IS A TEST,但当前代码不适用于以下情况,因此我需要更灵活的代码:
因此,标题可以在没有 a 的情况下存在-,并且有人可能会忘记在 之间放置空格-,同样,有人可能会放置太多空格。
上述所有情况的输出THIS IS 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);
Run Code Online (Sandbox Code Playgroud)
使用以“-”作为分隔符的explode(),根据“-”的存在将其分成块,然后取出第一部分并使用trim()修剪尾随空格,使标题不带尾随空格。这在所有提供的测试用例中给出了“这是一个测试”。如果没有破折号,则返回整个字符串。
<?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
?>
Run Code Online (Sandbox Code Playgroud)
我已经对此进行了测试:
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
Run Code Online (Sandbox Code Playgroud)
每个都返回“这是一个没有尾随空格的测试”