我在正确使用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 标签的正则表达式