草庐IT

PREG_REPLACE_EVAL

全部标签

PHP preg_split 忽略转义序列

我怎样才能一个一个地拆分字符串但忽略转义字符?在我的例子中,我有字符串:-\ntest\rtest\n我希望它是这样的:-Array([0]=>\n[1]=>t[2]=>e[3]=>s[4]=>t[5]=>\r[6]=>t[7]=>e[8]=>s[9]=>t[10]=>\n)有人说用preg_split,但我对正则表达式了解不多。 最佳答案 反斜杠需要在RegEx中转义。当引用一个实际的反斜杠时,你需要一系列的三个\\\正则表达式匹配preg_match_all("/\\\?[^\\\]/",$str,$matches);现场演示代

php - 反向preg_replace

我有这样的正则表达式:^page/(?P\d+)-(?P[^\.]+)\.html$和一个数组:$args=array('id'=>5,'slug'=>'my-first-article');我想要一个函数:my_function($regex,$args)这将返回这个结果:page/5-my-first-article.html如何实现?类似于https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse 最佳答案 有趣的挑战,我编写了一些适用于此示例的代码,请注意您

php - onkeyup ="this.value = this.value.replace(/,/g,' .')"with php echo' '

在输入字段中需要将,替换为.。使用HTM这样的代码可以正常工作onkeyup="this.value=this.value.replace(/,/g,'.')"但需要像这样在php中使用(带回显):echo'';用php不行。如果使用此this.value.replace(/,/g,/./)则,将替换为/./。尝试过(/,/g,"/./"),(/,/g,/"."/),(/,/g,.)没有任何效果(我的意思是,不会更改为.)。有什么想法吗? 最佳答案 您必须在PHP代码中使用反斜杠转义'。echo'';否则你就是把你的绳子切成小块,然

php - preg_match 在第二个斜杠后向后看

这是我的字符串:stringa/stringb/123456789,abc,cde在preg_match之后:preg_match('/(?输出是:stringb/123456789如何更改我的preg_match以在第二个斜线(或最后一个斜线之后)后提取字符串?期望的输出:123456789 最佳答案 您可以将/以外的任何内容匹配为/(?[^\/,]*否定字符类匹配除,或\以外的任何字符RegexDemo示例preg_match('/(?123456789 关于php-preg_mat

PHP难的preg_match

我正在尝试管理我用于XBMC的个人Web服务器上的一些文件,但所有文件(来自YIFY的电影)的名称如下Jumanji.1995-720p.YIFY.mp4Silver.Linings.Playbook.2012.1080p.x264.YIFY.mp4AmericanHustle(2013)1080pBrRipx264-YIFY.mp4请注意,有些项目用.分隔,而其他项目则用_或空格分隔。所以我需要做的是将文件preg_match到一个数组(title,year,quality)我只知道一些preg_match基础知识。但这对我来说太难了。例如echoextract('AmericanH

PHP preg_match 特定字段值

我想获取不断更改其值的字段的ID或名称。例子:我的表单中有这些字段:我想获取第一个字段的ID或名称,但它一直在变化,例如:模式是始终是5个数值。我已经试过了,但没有成功:preg_match('/(\d)id=\s*([0-9]{5})\s*(\d+)/',$html,$fieldId); 最佳答案 试试这个:preg_match('/\bid\s*=\s*"(\d{5})"/',$html,$fieldId);单词边界的转义序列是\b,而不是\d。没有理由在\b周围使用捕获组,因为它是零长度匹配。您没有匹配ID周围的双引号。您可以

PHP:如何用破折号和括号之间的所有内容拆分字符串。 (preg_split 或 preg_match)

几天来我一直在思考这个问题,但似乎没有得到想要的结果。例子:$var="SomeWords-OtherWords(MoreWords)Dash-Binded-Word";期望的结果:array([0]=>SomeWords[1]=>OtherWords[2]=>MoreWords[3]=>Dash-Bound-Word)我能够使用preg_match_all使这一切正常工作,但随后“Dash-Bound-Word”也被分解了。尝试将它与周围的空格匹配是行不通的,因为它会破坏除破折号之外的所有单词。我使用的preg_match_all语句(它也分解了破折号绑定(bind)的词)是这样的:

php 将 preg_replace 转换为 preg_replace_callback

我正在处理这段旧代码,遇到了这个-但失败了:preg_replace('!s:(\d+):"(.*?)";!e',"'s:'.strlen('$2').':\"$2\";'",$sObject);它告诉我preg_replacee修饰符已弃用,改为使用preg_replace_callback。据我所知,我应该用回调函数替换's:'.strlen('$2').':\"$2\";'部分替补上场。我不太明白的是我将要替换的正则表达式的作用。获取填充在数据库字段中的php序列化数据(愚蠢,我知道......),长度字段损坏并修复它们以重新插入是有点的一部分。那么谁能解释一下那个位在做什么,或

php - 如何使用 PHP preg_replace 链接 Twitter 用户名?

我想搜索我的推特状态对象的文本属性并将@username换成@username.到目前为止我尝试过的是这样的:$pattern='/([@]{1})([a-zA-Z0-9\_]+)/';$replace='\1\2';$new_string=preg_replace($pattern,$replace,$text);但它不做任何替换。我知道我的regexp是错误的,但我无法弄清楚确切的位置/原因。帮忙?**编辑:...根据要求提供示例数据?$text='@janesmithIlikethat,butmyfriend@johndoesaiditbetter.';期望的输出:@janesm

php - ereg() 到 preg_match() 怎么样?

这个问题在这里已经有了答案:HowcanIconverteregexpressionstopreginPHP?(4个答案)关闭3年前。我正在使用一些简单的正则表达式。很简单:"user/""user/[A-z0-9_-]"这些都适用于ereg,但不适用于preg。如何转换?谢谢