php字符串中的相邻字符

时间:2013-03-11 14:19:43

标签: php string locate

如何在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周围的字符,看看它们是否是字母数字(检查是否有字母或数字的字符,排除句号或空格),这样如果有,则不会#39 ; t替换它们

1 个答案:

答案 0 :(得分: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变量的代码(但是他们后来遗憾地删除了他们的答案,我无法得到他们的名字给他们信用)。我将其改编成if语句,以创建单词的链接,如果它们被空格,句点或s结尾包围。

解决方案的书面解释:我在$ pageBody中找到$ value的位置,使用条带不区分大小写的位置(因为该单词的名称可能与其名称不同)。然后使用该位置,我通过在$ pageBody中拉出$ value的位置并向下拉1来将单词左侧的字符定义为$ left,然后通过拉动将该单词右侧的字符定义为$ right。再次定位,并以$ value中的字符数上升。我在$ left上运行验证以确保它不是一封信,并确保$ right是字母s,或者根本不是字母。如果它通过了验证测试,那么我运行了剩余的代码。但是,如果$ value侧面的任何一个字符都是一个字母(不包括s作为$ right)那么它就不会执行代码