PHP strpos 在 nl2br() 之后搜索 <br /><br /> 时不起作用



我在正确使用strpos时遇到问题。 如果我搜索<br />它会找到它。如果我搜索中间有或没有空格的<br /><br /><br />,它不会,使用htmlspecialchars我可以说字符串充满了它。

   <?php
   $picArray = glob('projectData/' . $data['folder'] . '/*.jpg',GLOB_BRACE);
    $text = nl2br($data['definition']).'<br />';
    $cutP = 0;
    foreach($picArray AS $insert) {
        if(strpos($text,'<br /> <br /> <br />',$cutP) !== FALSE){
            $cutP = strpos($text,'<br /> <br /> <br />',$cutP)+6;
            echo $cutP.'_';
            $str_to_insert = '<img class="inTextImg" title="int" src="'.$insert.'" />';
            $text = substr($text, 0, $cutP) . $str_to_insert . substr($text, $cutP);
        }
        else {
            echo 'haha';
            $text .= '<img class="inTextImg" title="outText!" src="'.$insert.'" />';
        }
    }
    ?>

谢谢你的想法。

这是因为nl2br保留了原始换行符,就在'<br />'之后。您需要在要搜索的字符串中包含换行符。由于可以有几种不同的模式,因此使用正则表达式来匹配它是最简单的:

$text = preg_replace('/(?:<br />r?n?){3}/', $str_to_insert, $text);

你试过使用 preg_match() 吗?

if(preg_match("(<br />)+",$text) > 0){
    // code
}

不是 100% 在正则表达式上,但您需要一个检查一个或多个 br 标签的正则表达式

相关内容

最新更新