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