0

如何在php中找到与定位字符串相邻的字符?我正在使用 foreach 循环来查找具有 $value 变量的较大文本正文中的每个值,那么我如何还要找出 $value 字符串周围的字符?对不起,如果这令人困惑。

$count = 1;
foreach ($new_classes as $value)
    {
    $pageBody2 = $pageBody;
    $pageBody = str_replace($value, '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . '</a>', $pageBody, $count);
        if ($pageBody == $pageBody2)
        {
        $pageBody = str_replace(strtolower($value), '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . '</a>', $pageBody, $count);
        }
    }
echo $pageBody;

我想查找字符串 $value 周围的字符以查看它们是否是字母数字(检查是否有任何字母或数字字符,不包括句点或空格),以便如果有,它不会替换它们

4

1 回答 1

0

已解决:我想出了该怎么做:

$count = 1;
foreach ($new_classes as $value)
{
    $pos = stripos($pageBody, $value);
    $left = $pageBody[$pos - 1];
    $right = $pageBody[$pos + strlen($value)];

    if (!ctype_alpha($left) && (!ctype_alpha($right) || ($right == 's')))
    {
        $pageBody2 = $pageBody;
        if ($right == 's')
        {
            $pageBody = str_replace($value . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . 's' . '</a>', $pageBody, $count);
            if ($pageBody == $pageBody2)
            {
                $pageBody = str_replace(strtolower($value) . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . 's' . '</a>', $pageBody, $count);
            }
        }
        else
        {
            $pageBody = str_replace($value, '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . '</a>', $pageBody, $count);
            if ($pageBody == $pageBody2)
            {
                $pageBody = str_replace(strtolower($value), '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . '</a>', $pageBody, $count);
            }
        }
    }
}

其他人发布了一个定义 $left、$right 和 $pos 变量的代码(但是他们后来很遗憾地删除了他们的答案,我无法得到他们的名字来给予他们信任)。如果它们被空格、句点或以 s 结尾,我将其修改为 if 语句以创建指向单词的链接。

解决方案的书面说明:我使用 stripos 在 $pageBody 中定位了 $value 的位置,用于不区分大小写的位置(因为该单词的大小写可能与其作为类的名称不同)。然后使用该位置,我通过拉动 $pageBody 中 $value 的位置并向下 1 将单词左侧的字符定义为 $left,然后通过拉动将单词右侧的字符定义为 $right再次定位,并增加 $value 中的字符数。我对 $left 进行了验证,以确保它不是字母,并确保 $right 是字母 s,或者根本不是字母。如果它通过了验证测试,那么我运行其余的代码。但是,如果 $value 旁边的任一字符是字母(不包括 s 作为 $right),则它不会执行代码

于 2013-03-11T22:21:18.367 回答