我得到以下消息,我必须使用但不写的一些PHP:
Deprecated: Function ereg() is deprecated in /opt/lampp/htdocs/webEchange/SiteWeb_V5/inc/html2fpdf.php on line 466
Run Code Online (Sandbox Code Playgroud)
这是第466行:
if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
Run Code Online (Sandbox Code Playgroud)
我试过简单地用preg_match替换,但它无法识别正则表达式中的=修饰符.我对正则表达式不太好并且解决这个问题需要我学习正则表达式ereg需要和regexp preg_match需要(其中如果我没有弄错的话,那就不同了......你们能帮我解决这个问题吗?
谢谢
您需要将功能更改ereg_replace("[\]", "", $theData)为preg_replace
我在一个大型PHP应用程序(> 100万行,10岁)上工作,它广泛使用ereg和ereg_replace- 目前在516个类中有1,768个独特的正则表达式.
我非常清楚为什么ereg被弃用但显然preg可以高度参与.
有谁知道ereg在PHP中可能维持多长时间的支持,和/或有任何迁移到preg这种规模的建议.我怀疑从ereg到preg的自动翻译是不可能/不切实际的?
下面的代码给了我在PHP 7中的致命错误
$jquery_click_hook = ereg_replace("[^A-Za-z0-9]", "", strtolower($value['name']));
Run Code Online (Sandbox Code Playgroud)
有没有办法让它与PHP 7兼容?
是否有一个实用程序将POSIX转换为PCRE for PHP?我对PCRE上的PHP手册感到有些困惑,虽然我会尝试在PCRE上找到更多信息,但我想知道是否有人设计过这样的实用程序.
或者,如果有人会解释如何转换以下内容,那也没关系:
ereg("^#[01-9A-F]{6}$", $sColor)
Run Code Online (Sandbox Code Playgroud)
但请解释它是如何完成的,而不仅仅是告诉我转换.
函数eregi()已弃用.我怎样才能取代eregi().我尝试使用preg_match然后停止工作.
我们帮助他们:
http://takien.com/513/how-to-fix-function-eregi-is-deprecated-in-php-5-3-0.php
代码之前:
if ( ! eregi("convert$", $this->library_path))
{
if ( ! eregi("/$", $this->library_path)) $this->library_path .= "/";
$this->library_path .= 'convert';
}
if (eregi("gd2$", $protocol))
{
$protocol = 'image_process_gd';
}
Run Code Online (Sandbox Code Playgroud)
代码然后:
if ( ! preg_match("convert$/i", $this->library_path))
{
if ( ! preg_match("/$/i", $this->library_path)) $this->library_path .= "/";
$this->library_path .= 'convert';
}
if (preg_match("gd2$/i", $protocol))
{
$protocol = 'image_process_gd';
}
Run Code Online (Sandbox Code Playgroud) 我有那个测试工作正常:
if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false)
Run Code Online (Sandbox Code Playgroud)
并且随着ereg的弃用,我用这个替换了测试:
if (preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $dateToTest, $tab) == false)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Warning: preg_match() [function.preg-match]: Unknown modifier '.' in ..................
Run Code Online (Sandbox Code Playgroud)
有什么问题,我该如何解决?
如果有一件事我无法理解(或学习),那就是preg_replace语法.我需要帮助消除之间所有可能的符号(空格,制表符,新行等)>和<.
意思是,我有这样的XML:
<?xml version=\"1.0\" encoding=\"UTF-8\"?><bl> <snd>BANK</snd> <rcv>ME</rcv> <intid>773264</intid> <date>17072012</date></bl>
Run Code Online (Sandbox Code Playgroud)
我需要它看:
<?xml version=\"1.0\" encoding=\"UTF-8\"?><bl><snd>BANK</snd><rcv>ME</rcv><intid>773264</intid><date>17072012</date></bl>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我想出了这个:
$this -> data = preg_replace('\>(.*?)<\', '><', $data);
Run Code Online (Sandbox Code Playgroud)
但它甚至没有接近我的需要.一个解决方案将不胜感激.
我有一些我正在使用的简单正则表达式.
这很简单:
"user/"
"user/[A-z0-9_-]"
Run Code Online (Sandbox Code Playgroud)
这些都适用于ereg,但不是preg.
如何转换呢?
谢谢
有谁知道这个正则表达式有什么问题?它在RegexPal和RegExr等网站上运行良好,但在PHP中它给了我这个警告,没有结果:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
preg_match('name="dsh" id="dsh" value="(.*?)"', 'name="dsh" id="dsh" value="123"', $matches);
Run Code Online (Sandbox Code Playgroud) php ×10
regex ×8
ereg ×3
preg-match ×3
ereg-replace ×2
pcre ×2
preg-replace ×2
eregi ×1
php-7 ×1
posix ×1
posix-ere ×1
string ×1
utilities ×1