【问题标题】:Adjacent characters in php stringphp字符串中的相邻字符
【发布时间】:2013-03-11 14:19:42
【问题描述】:

如何在 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 周围的字符以查看它们是否为字母数字(检查是否有任何字母或数字字符,不包括句点或空格),如果有,则不会替换它们

【问题讨论】:

  • 你能给我们举个例子,并展示你已经尝试过的代码吗?
  • 您是在文本中查找单词还是在一些不加选择的字符集中查找字符?
  • 我会说使用 preg_match() 而不是 foreach 循环。添加一些代码,我们将为您提供帮助
  • 大卫,如果您解决了自己的问题,请在答案中发布解决方案并接受blog.stackoverflow.com/2011/07/…
  • 不让我,这只是我第二次向 StackOverflow 发布问题,我还没有足够的声誉来回答我自己的问题,说我需要等待 8问题被问到几个小时后,所以我想我现在会这样做

标签: php string locate


【解决方案1】:

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

$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 结尾的单词的链接。

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

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2016-04-07
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多