Php 是否删除字符串的第一个和最后一个实例?

Php 是否删除字符串的第一个和最后一个实例?,php,string,Php,String,如何从字符串中删除某段html的第一个实例 我想把它搬走 </tr> </table></td> </tr 你会想要的。将该部分替换为您需要的空白(例如:)。将该部分替换为空白(例如:)如果您大致知道要替换的子字符串离字符串的结尾有多近,可以使用带有负数的$start和$length参数的substr\u Replace(),找到最后一个匹配项,然后将其删除。类似这样的内容(未经测试,编写速度非常快): 类似,第一次出现 f

如何从字符串中删除某段html的第一个实例

我想把它搬走

      </tr>
    </table></td>

  </tr


你会想要的。将该部分替换为您需要的空白(例如:)

。将该部分替换为空白(例如:)

如果您大致知道要替换的子字符串离字符串的结尾有多近,可以使用带有负数的
$start
$length
参数的
substr\u Replace(),找到最后一个匹配项,然后将其删除。类似这样的内容(未经测试,编写速度非常快):

类似,第一次出现

function replace_first_occurrence($haystack, $needle) {        
    substr_replace($haystack, "", strpos($haystack, $needle, $pos), 
        strlen($needle));
}
您还可以对其进行概括,以替换第n次出现:

function replace_nth_occurrence($haystack, $needle, $n) {
    $pos = 0;
    $last = 0;

    for($i = 0 ; $i <= $n ; $i++) {
        $pos = strpos($haystack, $needle, $pos);
        $last = $pos;
    }

    substr_replace($haystack, "", $last, strlen($needle));
}
函数替换第n次出现($haystack,$needle,$n){
$pos=0;
$last=0;

对于($i=0;$i如果您大致知道要替换的子字符串离字符串的末尾有多近,则可以使用
substr\u replace()
使用负的
$start
$length
参数,或者您可以手动编写一个函数来实际执行,找到最后一次出现的函数,然后将其删除。类似这样的内容(未测试,编写速度非常快):

类似,第一次出现

function replace_first_occurrence($haystack, $needle) {        
    substr_replace($haystack, "", strpos($haystack, $needle, $pos), 
        strlen($needle));
}
您还可以对其进行概括,以替换第n次出现:

function replace_nth_occurrence($haystack, $needle, $n) {
    $pos = 0;
    $last = 0;

    for($i = 0 ; $i <= $n ; $i++) {
        $pos = strpos($haystack, $needle, $pos);
        $last = $pos;
    }

    substr_replace($haystack, "", $last, strlen($needle));
}
函数替换第n次出现($haystack,$needle,$n){
$pos=0;
$last=0;

对于($i=0;$i而言,最简单的方法是分解/拆分字符串,移动顶部并弹出最后一个字符串,然后内爆剩余的分隔符并将三个字符串连接起来..即:

$separator = 'your specified html separator here';
$bits = explode($separator , $yourhtml );
$start = array_shift($bits);
$end = array_pop($bits);
$sorted = $start . implode($separator,$bits) . $end;

(未测试)

最简单的方法是分解/拆分字符串,移动顶部并弹出最后一个字符串,然后内爆剩余的分隔符,并将三个字符串连接起来..即:

$separator = 'your specified html separator here';
$bits = explode($separator , $yourhtml );
$start = array_shift($bits);
$end = array_pop($bits);
$sorted = $start . implode($separator,$bits) . $end;

(未测试)

这将删除最后一次出现:

$needle = <<<EON
    </tr>
  </table></td>

</tr
EON;

if(preg_match('`.*('.preg_quote($needle).')`s', $haystack, $m, PREG_OFFSET_CAPTURE)) {
  $haystack = substr_replace($haystack, '', $m[1][1], strlen($m[1][0]));
}
甚至通过向regexp添加i-flag来不敏感地搜索案例:

if(preg_match('`.*('.implode('\s+', array_map('preg_quote', preg_split('`\s+`', $needle))).')`is', $haystack, $m, PREG_OFFSET_CAPTURE)) {
  $haystack = substr_replace($haystack, '', $m[1][1], strlen($m[1][0]));
}

这将删除最后一个事件:

$needle = <<<EON
    </tr>
  </table></td>

</tr
EON;

if(preg_match('`.*('.preg_quote($needle).')`s', $haystack, $m, PREG_OFFSET_CAPTURE)) {
  $haystack = substr_replace($haystack, '', $m[1][1], strlen($m[1][0]));
}
甚至通过向regexp添加i-flag来不敏感地搜索案例:

if(preg_match('`.*('.implode('\s+', array_map('preg_quote', preg_split('`\s+`', $needle))).')`is', $haystack, $m, PREG_OFFSET_CAPTURE)) {
  $haystack = substr_replace($haystack, '', $m[1][1], strlen($m[1][0]));
}

-1不起作用。从文档中:用替换字符串替换所有出现的搜索字符串。-1不起作用。从文档中:用替换字符串替换所有出现的搜索字符串。您是否动态生成此字符串?也许还有另一个选项,而不是可怕的preg_Replace…您真正需要做的是s找出产生错误输出的原因并在那里修复。是否动态生成此字符串?也许有另一个选项与可怕的preg_替换相反…您真正需要做的是找到产生错误输出的原因并在那里修复。实际上,
str_replace()的
$count
参数
通过引用传递,用于存储函数进行的替换次数。它不允许您设置限制。也许您应该为代码添加一些保护措施,以防不存在要删除的字符串。f!您是对的,必须为捕获(已编辑)考虑其他内容实际上,
str\u replace()的
$count
参数
通过引用传递,用于存储函数进行的替换次数。它不允许您设置限制。也许您应该为代码添加一些保护措施,以防不存在要删除的字符串。f!您是对的,必须为捕获(已编辑)考虑其他内容如果不关心区分大小写,可以使用strripos()查找字符串中最后出现的字符串。如果不关心区分大小写,可以使用strripos()查找字符串中最后出现的字符串。