我正在使用preg_match()从变量中提取文本片段,假设变量如下所示:[htmlcode]Thisissupposedtobedisplayed[/htmlcode]middletext[htmlcode]Thisisalsosupposedtobedisplayed[/htmlcode]我想提取[htmlcode]的内容并将它们输入到一个数组中。我通过使用preg_match()来做到这一点。preg_match('/\[htmlcode\]([^\"]*)\[\/htmlcode\]/ms',$text,$matches);foreach($matchesas$value){r
我需要验证一些以UTF-8编码的用户输入。许多人推荐使用以下代码:preg_match('/\A([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*\z/x',$string);这是一个取自http
为了好玩,我决定制作类似于Markdown的东西。根据我过去对正则表达式的一些小经验,我知道它们有多么强大,所以它们将是我所需要的。所以,如果我有这个字符串:Hello**bold**world我如何使用preg_replace将其转换为:Helloboldworld我假设是这样的?$input="Hello**bold**world";$output=preg_replace("/(\*\*).*?(\*\*/)","",$input); 最佳答案 关闭:$input="Hello**bold**world";$output=pr
这个问题在这里已经有了答案:Warning:preg_replace():Unknownmodifier(3个答案)关闭3年前。我的测试运行良好:if(ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[]([0-9]{2}):([0-9]{2}):([0-9]{2})",$dateToTest,$tab)==false)由于ereg已被弃用,我用这个替换了那个测试:if(preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[]([0-9]{2}):([0-9]{2}):([0-9]{2})
我知道如果$stringabc包含除数字以外的任何内容,我当前使用的一个条件是:if(preg_match("/[^0-9]/",$stringabc))我想要一个if条件,如果$stringdef包含除字母、空格和破折号(-)以外的任何内容,它会给出错误。 最佳答案 那就是:if(preg_match('/[^a-z\s-]/i',$stringabc))“除字母(a-z)、空格(\s,表示任何类型的空格)和破折号(-)之外的任何内容”。也允许数字:if(preg_match('/[^0-9a-z\s-]/i',$stringab
尽管我对伪代码中的正则表达式有足够的了解,但是我仍然无法翻译我想在phpregexperl中执行的操作。我正在尝试使用preg_match提取表达式的一部分。我有以下字符串${classA.methodA.methodB(classB.methodC(classB.methodD)))},我需要做2件事:一种。验证语法${classA.methodA.methodB(classB.methodC(classB.methodD)))}有效${classA.methodA.methodB}有效${classA.methodA.methodB()}无效${methodB(methodC(cl
基本上我想替换句子中的某些词(例如,“树”一词与“披萨”一词)。限制:当需要替换的单词在双引号之间时,不进行替换。例子:Thetreeisgreen.->REPLACEtreeWITHpizza"The"treeis"green".->REPLACEtreeWITHpizza"Thetree"isgreen.->DONTREPLACE"Thetreeis"green.->DONTREPLACEThe""treeisgreen.->REPLACEtreeWITHpizza是否可以用正则表达式做到这一点?我会计算单词前双引号的数量,并检查它是奇数还是偶数。但这可能在php中使用preg_r
寻求帮助!我需要在最后一次出现空格时拆分字符串...例如“GreatNeckNY”我需要将它分开,这样我就有了“GreatNeck”和“NY”我在使用preg_split和基本内容时没有遇到问题,但我很难弄清楚如何告诉它只在最后一次出现时拆分!任何帮助将不胜感激!迈克 最佳答案 你可以使用lookaheadassertion:preg_split('/\s+(?=\S+$)/',$str)现在,仅当(?=\S+$)从此点开始匹配时,字符串才会在\s+(空白字符)处拆分。\S+$匹配字符串末尾的非空白字符。
设计这个数据库的人决定为“主题”创建一个多值列,每个值都写成有序列表,即“1.[主题]2.[另一个主题]3.[第三个主题]"等等。我想为每个使用的主题创建一个数组,因此我需要将这些值拆分为不同的主题。$subjects=preg_split("[0-9]+\.\s",$subject);当我运行它时,我得到一个警告:preg_split()[function.preg-split]:Unknownmodifier'+'。我做错了什么? 最佳答案 您忘记了分隔符:$subjects=preg_split("/[0-9]+\.\s/",
我试图从这个数组中获取信息,但出于某种原因,它将所有内容嵌套到$matches[0]中。这是否按预期工作?有没有办法将其放入深度为1的数组中?编辑:这是正则表达式:([A-Z][a-z]+\s){1,5}\s?[^a-zA-Z\d\s:,.\'\"]\s?[A-Za-z+\W]+\s[\d]{1,2}\s[A-Z][a-z]+\s[\d]{4} 最佳答案 preg_match_all()总是返回一个数组(如果成功,否则你会得到一个空数组),其中索引0包含一个数组,每个完整匹配都有一个元素,并且其他索引成为捕获组,每个匹配项都有一个内