gpt4 book ai didi

php - 比较并显示字符串/数组中的字符或不存在的字符

转载 作者:行者123 更新时间:2023-12-02 18:17:57 24 4
gpt4 key购买 nike

我无法解决如何将字符串的字符与字符串或数组中的元素进行比较的问题。

我正在寻找的结果是这样的,我想检查单词concept中的字母c

同时仍然显示单词concept,并且对于第一次出现的c,将其加粗或加下划线以使其突出。

我觉得我走在正确的道路上,只需要一点指导。

<?php
$word = "conrad";
$str = array("Concept", "Support", "Design", "Fresh", "Aged","Glad");


echo $test = implode(" ", $str). '<br />';

foreach(str_split($word) as $position => $letter) {
if(stripos($str[$position], $letter) !== false) {

echo $letter .' found in <b>'. $str[$position] . '</b>';

$pos = stripos($str[$position], $letter);

echo ' posistion '. $pos .'<br>';

}
}
var_dump(str_split($word), $position, $letter, $str[$position], $test);

?>

如果有任何不清楚的地方,请告诉我,我会尽力更好地澄清问题。

谢谢!

最佳答案

<?php
$word = "conrad";
$str = array("Concept", "Support", "Design", "Fresh", "Aged","Glad");

$test = implode(" ", $str)";
echo "{$test}<br />;

foreach(str_split($word) as $position => $letter) {
if(stripos($str[$position], $letter) !== false) {
$message = "{$letter} found in ";
// This is very basic, but gets the job done quickly
$firstLetterFlag = false;
foreach(str_split($str[$position]) as $strLetter) {
if (
strtolower($strLetter) === strtolower($letter) &&
$firstLetterFlag === false
) {
$firstLetterFlag = true;
$strLetter = "<b>{$strLetter}</b>";
}
$message .= $strLetter;
}
$pos = stripos($str[$position], $letter);
$message .= " position {$pos}<br>";
echo $message;
}
}

var_dump(str_split($word), $position, $letter, $str[$position], $test);

您应该使用嵌套的foreach并正确插入字符串。请注意,大括号不是必需的,但更正确地表示正在对变量进行插值。

编辑

Robby Cornelissen评论中指出,他的方法比我的快得多。我错误地说过,正则表达式几乎总是会减慢你的速度。正如他正确指出的那样,这是一个概括。 preg_replace 等正则表达式函数比其对应的 str_replace 慢一些。然而,更多的代码(如我的回答)通常会比更少的代码(如 Robby 的回答)运行得更慢。无论如何,我们谈论的是纳秒。提高速度是我的错误,因为在这种情况下它可以忽略不计。

现在,我 promise 更干净的代码。经过一番尝试后,很快就发现这不是递归函数的最佳用例。然而,函数式编程总是比过程式编程更好,正如 Linus Torvalds 所说,“如果你需要超过 3 级的缩进,那么无论如何你都完蛋了,应该修复你的程序。”

<?php
$word = "conrad";
$str = ["Concept", "Support", "Design", "Fresh", "Aged","Glad"];

$test = implode(" ", $str)";
echo "{$test}<br />;

function findLetter($testWord = "", $wordList = [])
{
foreach(str_split($testWord) as $position => $letter) {
if(stripos($wordList[$position], $letter) !== false) {
echo buildMessage($letter, $wordList[$position]);
}
}
}

function buildMessage($letter, $word, $firstLetterFlag = false)
{
$message = "{$letter} found in ";
foreach(str_split($word) as $wordLetter) {
if (
strtolower($wordLetter) === strtolower($letter) &&
$firstLetterFlag === false
) {
$firstLetterFlag = false;
$wordLetter = "<b>{$wordLetter}</b>";
}
$message .= $wordLetter;
}
$pos = stripos($word, $letter);
return "{$message} position {$pos}<br>";
}

findLetter($word, $str);

关于php - 比较并显示字符串/数组中的字符或不存在的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777501/

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