gpt4 book ai didi

php - 为什么这个标准的正则表达式不能在 PHP ereg 函数中工作

转载 作者:行者123 更新时间:2023-11-28 03:59:02 25 4
gpt4 key购买 nike

我是 Reg Ex 的新手,并不完全理解不同风格之间的区别。但是,我有一个基本的 Reg Ex,当我通过 UNIX 系统(vi 和 grep)尝试它时它可以工作,但当我尝试在 PHP 的 ereg 函数中使用它时却不能。我怀疑 PHP ereg 函数有什么不同导致它不起作用:

<?php
$string = 'Feugiat <em>hendrerit</em> sit iriuredolor aliquam.';
$string = ereg_replace("<em\b[^>]*>(.*?)</em>","\\1",$string);
echo $string;
?>

我想输出 Feugiat hendrerit sit iriuredolor aliquam. 没有 em 标签。然而,它只返回一个空字符串。

最佳答案

您可能需要转义反斜杠:

$string = ereg_replace("<em\\b[^>]*>(.*?)</em>","\\1",$string);

这是因为 \b在 PHP 字符串中表示不同于 \b 的内容在正则表达式中。使用 \\在 PHP 字符串中通过一个反斜杠传递给 ereg_replace() .这与您需要在替换字符串 "\\1" 中使用双反斜杠的原因相同。 .

根据您的应用,您可能还需要考虑输入 $string 的可能性不包含任何 <em>标签。在那种情况下,上述语句将产生一个空字符串,这可能不是您想要的。

关于php - 为什么这个标准的正则表达式不能在 PHP ereg 函数中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/375563/

25 4 0
文章推荐: html - 垂直对齐中间在跨度元素中不起作用
文章推荐: javascript - 将