草庐IT

preg_reg_other

全部标签

php - 替换为 preg_replace 中的动态变量

我遇到了这个问题,就是我有一个这样的数组:$array=['name'=>'John','email'=>john@gmail.com];和这样的字符串示例:$string='Hi[[name]],youremailis[[email]]';问题很明显,将姓名替换为John,并将电子邮件替换为john@gmail.com。我的尝试://checkif$stringhas[[]]pattern$stringHasBrackets=preg_match_all('/\[\[(.*?)\]\]/i',$string,$matchOutput);if($stringHasBrackets){f

PHP:将 preg_replace 与 htmlentities 结合使用

我正在将RSS写入JSON解析器,作为其中的一部分,我需要在任何标签上使用htmlentities()在描述标签内找到。目前,我正在尝试使用preg_replace(),但我有点吃力。我当前的(非工作)代码如下所示:$pattern[0]="/\(.*?)\/is";$replace[0]=''.htmlentities("$1").'';$rawFeed=preg_replace($pattern,$replace,$rawFeed);如果您对此也有更优雅的解决方案,请分享。谢谢。 最佳答案 简单。使用preg_replace_c

php - preg_replace() str_replace() 撇号噩梦! - Drupal 菜单图像替换

谁能帮我解释为什么这不起作用?$cssid=preg_replace("/'/","",$cssid);试图从某些html中删除单引号...谢谢!H编辑这是完整的功能-它旨在使用图像重建Drupal菜单,并将CSS类应用于每个项目,允许您选择所需的图像。需要删除空格和撇号,否则CSS选择器会失败。导致所有这些问题的菜单项的标题是:What'snew你会认为它非常无害。(除了那个单一的')functionprimary_links_add_icons(){$links=menu_primary_links();$level_tmp=explode('-',key($links));$le

php - preg_match 到 domain.tld

如何获取只包含domain.tld的字符串?if(preg_match('^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$',$domain))echo"domain.tldfound!";但对于正则表达式^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$,子域是还可以。但我只想检查“domain.tld”。我应该使用什么正则表达式?谢谢。 最佳答案 if(preg_match('/^[-a-z0-9]+\.[a-z]{2,6}$/',strtolower($domain)))echo"do

php - 从 PHP 中的 preg_split 获取分隔符

我的PHP代码:$cmd='SELECTvar1FROMvar2GROUPBYvar3LIMITvar4';//splitcommand$p=preg_split('/SELECT|FROM|GROUPBY|LIMIT/si',$cmd);输出:Array([0]=>[1]=>var1[2]=>var2[3]=>var3[4]=>var4)下面的输出可能吗?Array([SELECT]=>var1[FROM]=>var2[GROUPBY]=>var3[LIMIT]=>var4)或者有什么方法可以得到定界符吗? 最佳答案 您是否考虑过

PHP preg_replace 反向引用导致未定义常量通知

我正在尝试在code.google.com上使用NameCase一个php类.当我运行它时,我收到此通知,但我不明白为什么。PHPNotice:UseofundefinedconstantMc-assumed'Mc'innamecase.php(54):regexpcodeonline153if(preg_match('/\bMac[A-Za-z]{2,}[^aciozj]\b/',$str)||preg_match('/\bMc/',$str)){54$str=preg_replace("/\b(Ma?c)([A-Za-z]+)/e","$1.ucfirst('\\2')",$str

php - 调整在电话号码上使用 Preg_Match()

我正在使用preg_match从一段文本中提取美国电话号码的各个部分。我已经可以提取号码了。但我想让match[0]只包含电话号码。问题:我的模式很接近,但我需要一些帮助来摆脱电话号码前的任何文本。如何去掉前面的字符串"Heymyphoneis"?PHP代码$pattern='/.*?(?:1(?:[.-])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'.'(?:(?输出Array([0]=>Heymyphoneis911-628-4539[1]=>911[2]=>628[3]=>4539) 最佳答案 只需删除

php - USAePay源码中ereg_replace转preg_replace

我正在使用USAePay的[可怕的]PHP库连接到他们的网关,但我收到以下错误:Deprecated:Functionereg_replace()isdeprecatedin.../usaepay.phponline320这对应于以下行:$this->amount=ereg_replace("[^[:digit:].]","",$this->amount);所以,我想用preg_replace将其关闭。这是我的想法:$this->amount=ereg_replace("/[^[\d].]/","",$this->amount);这是否等同于上面的那个? 最

PHP preg_replace : How can I match something but not replace it?

例如,如果我想preg_replace一个HTML元素的标题:$str=preg_replace('/title=\"([^\"]+)\"/','foo',$str);请不要为这个特定示例提供其他解决方案(非正则表达式),这只是一个示例。我需要一个适用于任何正则表达式的解决方案。 最佳答案 如果你想用preg_replace匹配部分,但只是部分替换其他东西,那么有两种选择。您可以重新插入匹配的部分(包含在捕获组中,然后使用$1和$3):$str=preg_replace('/(title=")([^"]+)(")/','$1foo$

php - preg_match 分隔符错误

美好的一天,我已经阅读了大约25篇不同的文章,讨论如何添加“/”或“~”等作为分隔符,但对这行代码无济于事。我尝试过的一切仍然给我一个定界符错误。任何帮助将不胜感激。感谢您的时间。以下是引起我所有研究的原始代码。$allowedHosts=array();//self$host=$_SERVER['HTTP_HOST'];if(preg_match('\d+\.\d+\.\d+\.\d+',$host)){$allowedHosts[]=$host;}else{$allowedHosts[]='*.'.$host;$allowedHosts[]=$host;}