草庐IT

REGEX_EXTRACT

全部标签

PHP Regex - 使用逗号分隔符拆分字符串,忽略标签之间的逗号

给定这个字符串:$somethingawesome=',,TRUE,foo';如何得到这样的数组:Array([0]=>[1]=>[2]=>TRUE[3]=>foo) 最佳答案 根据给定的字符串,您可以使用以下...$results=preg_split('/(?:]*>)?\K,/',$str);print_r($results);输出Array([0]=>[1]=>[2]=>TRUE[3]=>foo)或者当然你可以匹配所有而不是使用split..preg_match_all('/]+>|[^>

PHP Regex 查找字符串中所有大写的单词

PHPRegex查找字符串中所有大写的单词:$string="testsampletest:2015.ŽYDRŪNASPAVARDENIS";preg_match_all('/\b([A-Z-][\p{L}\pL]+)\b/',$string,$matches);var_dump($matches);输出:array(2){[0]=>array(2){[0]=>string(8)"YDRŪNAS"[1]=>string(10)"PAVARDENIS"}[1]=>array(2){[0]=>string(8)"YDRŪNAS"[1]=>string(10)"PAVARDENIS"}}问题

PHP REGEX 删除括号和括号内的文字

需要删除其中的括号和文字。现在,它几乎可以正常工作。删除从括号开始的所有文本。我的代码:$lines=preg_replace("/\(([^\d]+)/",'',$lines);例如,文本:Somerandomwords(word1/word2/word3)aaaa代码也删除括号后的所有文本,Somerandomwords但我需要做的是(它应该是什么样子):Somerandomwordsaaaa 最佳答案 /\([^()]*\)/\(-左括号[^()]*-尽可能多的字符,不是括号\)-右括号您可以选择删除末尾的一个空格(/\([^

php - RegEx (.*?) 除了一个字符之外的任何东西

我正在尝试将某些内容与/^(.*?)\/$行之间的模式相匹配。但是,由于(.*?)已经匹配/它也匹配anything//////////但我只希望它匹配anything/。是否有从(.*?)或其他解决方案中排除/的好方法? 最佳答案 使用negatedcharacterclass[^\/]:/^([^\/]*)\/$/参见regexdemo在PHP中,您可以使用其他一些分隔符来避免模式中的过度转义,比如~:$rx='~^([^/]*)/$~';详细信息:^-字符串的开始([^\/]*)-第1组捕获除/以外的0+个字符\/-文字/$-

PHP - extract() 类型

PHP的extract()函数可以采用几种extract_types之一。但是extr_prefix_same和extr_prefix_if_exists有什么区别呢?手册听起来像是,在任何一种情况下,如果变量名已经存在,新变量将被添加前缀。谢谢! 最佳答案 使用EXTR_PREFIX_IF_EXISTS时,如果变量不存在,则也不会创建带前缀的版本。在这个例子中:functiontest(){$a=12345;extract(array('a'=>1,'b'=>2,'c'=>3),EXTR_PREFIX_IF_EXISTS,'my_

regex - 用 php preg_replace 只替换一次字符串

我需要一个replacestringonce函数,我相信preg_match可能是我最好的选择。我正在使用这个,但由于使用的动态性,有时这个函数表现得很奇怪:functionstr_replace_once($remove,$replace,$string){$pos=strpos($string,$remove);if($pos===false){//Nothingfoundreturn$string;}returnsubstr_replace($string,$replace,$pos,strlen($remove));}现在我正在采用这种方法,但遇到了下面列出的错误...。我正在

php - 如何防止使用 Regex 删除斜杠?

我不知道如何更改下面的正则表达式以保留斜杠。我想确保它只包含字母、数字、下划线、破折号和斜线。($query类似于/offer/some-offer-bla-bla-bla)$query=preg_replace('/[^-a-zA-Z0-9_]/','',$query);谢谢 最佳答案 只需在字符类中包含/即可。但是由于您使用/作为正则表达式分隔符,您需要将其转义以及\/:$query=preg_replace('/[^-a-zA-Z0-9_\/]/','',$query);^^你可以通过使用\w代替[a-zA-Z0-9_]来缩短

php - 在 RegEx (PCRE) 中的上一场比赛结束时继续

我试图阻止\Ganchor匹配字符串的开头。我只希望它在最后一个正则表达式匹配结束时匹配。给定以下文本:Pig,Cow,Goatfruit:apple,orange,peach,pearvegetable:Carrot,Lettuce,Cellery这个模式:(fruit:|\G)([\w]+|[\,])我希望它只匹配“fruit:”之后的单词,但我需要它单独捕获每个单词。如果我只是把+放在这个模式的最后,它会匹配“fruit:”之后的所有词,但它只会捕获“pear”,因为+的每次迭代都会踩到最后一个。问题来了。这种模式有效,除了它还匹配“Pig,CowandGoat”,因为\G将匹配

php - 用于处理字母数字输入的 RegEx - PHP

我有这个代码。它打印出我想要的312,3。但是,如果我提供像D12/336这样的输入,那么它就不起作用了。我想让它打印336,D12我该怎么做?以及我当前不处理此字母数字的代码有什么问题?是因为我用了\d吗?编辑:我希望它也能处理这样的输入148/DIG.111那么输出应该是DIG.111,148 最佳答案 是的\d只包含数字。您可以尝试\w而不是字母数字,但另外它还包括_要成为Unicode,您可以努力~[\pL\d.]+/[\pL\d.]+~u\pL是具有“字母”属性的Unicode代码点最后的u开启使用该功能所需的UTF-8模

php - 使用 extract( $_REQUEST, EXTR_IF_EXISTS ) 安全吗?

在函数(不是类方法)中,如果您事先定义变量,使用extract($_REQUEST,EXTR_IF_EXISTS)是否安全?例子:$a=$b=$c='';extract($_REQUEST,EXTR_IF_EXISTS);或者这会允许PHP全局变量和其他敏感内容被恶意攻击者覆盖吗? 最佳答案 你可以这样做,但你也可以很容易地避免这样做:$a=isset($_REQUEST['a'])?$_REQUEST['a']:'';$b=isset($_REQUEST['b'])?$_REQUEST['b']:'';$c=isset($_REQ