gpt4 book ai didi

php - 通过单独的某些单词拆分/解析 PHP 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:24 29 4
gpt4 key购买 nike

我搜索了 PHP 手册、Stackoverflow 和一些论坛,但我对某些 PHP 逻辑感到困惑。也许我只是累了,但我真的很感激任何人对此提供的帮助或指导。

我有一个 PHP 字符串,比如:

 $string = 'cats cat1 cat2 cat3 dogs dog1 dog2 monkey creatures monkey_creature1 monkey_creature2 monkey_creature3';

最终,理想情况下我希望我的最终输出看起来像这样,但现在只获取数组就够了:

 <h2>cats</h2>
<ul>
<li>cat1</li>
<li>cat2</li>
<li>cat3</li>
</ul>

<h2>dogs</h2>
<ul>
<li>dog1</li>
<li>dog2</li>
</ul>

<h2>monkey creatures</h2>
<ul>
<li>monkey_creature1</li>
<li>monkey_creature2</li>
<li>monkey_creature3</li>
</ul>

不过有一个问题,有时字符串会略有不同:

 $string = 'cats cat1 cat2 cat3 cat4 cat5 cats6 dogs dogs1 dogs2 monkey creatures monkey_creature1 lemurs lemur1 lemur2 lemur3';

无论如何,这是我在 Stackoverflow 上的第一个问题,在此先感谢所有帮助的人!

编辑:我在某些限制下工作,我不能更改字符串之前的任何代码。我知道高级所有的 parent ('猫','狗','狐猴','猴子生物(有空间)'

最佳答案

我设计了一个无论“关键字”之间是否有空格都有效的答案,只要第一个关键字不是复数:)

下面是代码,请随意查看,你可以用文本做的事情真的很漂亮:)

<?
$string = 'cats cat1 cat2 cat3 dogs dog1 dog2 monkey creatures monkey_creature1 monkey_creature2 monkey_creature3';

$current_prefix = '';
$potential_prefix_elements = array();

$word_mapping = array();

foreach(split(" ", $string) as $substring) {
if(strlen($current_prefix)) {
// Check to see if the current substring, starts with the prefix
if(strrpos($substring, $current_prefix) === 0)
$word_mapping[$current_prefix . 's'][] = $substring;
else
$current_prefix = '';
}

if(!strlen($current_prefix)) {
if(preg_match("/(?P<new_prefix>.+)s$/", $substring, $matches)) {
$potential_prefix_elements[] = $matches['new_prefix'];

// Add an 's' to make the keys plural
$current_prefix = join("_", $potential_prefix_elements);

// Initialize an array for the current word mapping
$word_mapping[$current_prefix . 's'] = array();

// Clear the potential prefix elements
$potential_prefix_elements = array();
} else {
$potential_prefix_elements[] = $substring;
}
}
}

print_r($word_mapping);

这是输出,我已将其作为数组提供给您,因此您可以轻松构建 ul/li 层次结构:)

Array
(
[cats] => Array
(
[0] => cat1
[1] => cat2
[2] => cat3
)

[dogs] => Array
(
[0] => dog1
[1] => dog2
)

[monkey_creatures] => Array
(
[0] => monkey_creature1
[1] => monkey_creature2
[2] => monkey_creature3
)

)

关于php - 通过单独的某些单词拆分/解析 PHP 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442233/

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