草庐IT

PHP preg_replace 将 **xyz** 转换为 <b>xyz</b>

为了好玩,我决定制作类似于Markdown的东西。根据我过去对正则表达式的一些小经验,我知道它们有多么强大,所以它们将是我所需要的。所以,如果我有这个字符串:Hello**bold**world我如何使用preg_replace将其转换为:Helloboldworld我假设是这样的?$input="Hello**bold**world";$output=preg_replace("/(\*\*).*?(\*\*/)","",$input); 最佳答案 关闭:$input="Hello**bold**world";$output=pr

PHP - preg_match 和 "Unknown modifier"错误

这个问题在这里已经有了答案: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})

php - preg_match 只允许字母、空格和破折号和空格

我知道如果$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

PHP Regex preg_match提取

尽管我对伪代码中的正则表达式有足够的了解,但是我仍然无法翻译我想在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

php - preg_replace 当不在双引号内时

基本上我想替换句子中的某些词(例如,“树”一词与“披萨”一词)。限制:当需要替换的单词在双引号之间时,不进行替换。例子:Thetreeisgreen.->REPLACEtreeWITHpizza"The"treeis"green".->REPLACEtreeWITHpizza"Thetree"isgreen.->DONTREPLACE"Thetreeis"green.->DONTREPLACEThe""treeisgreen.->REPLACEtreeWITHpizza是否可以用正则表达式做到这一点?我会计算单词前双引号的数量,并检查它是奇数还是偶数。但这可能在php中使用preg_r

php preg_split 最后出现的字符

寻求帮助!我需要在最后一次出现空格时拆分字符串...例如“GreatNeckNY”我需要将它分开,这样我就有了“GreatNeck”和“NY”我在使用preg_split和基本内容时没有遇到问题,但我很难弄清楚如何告诉它只在最后一次出现时拆分!任何帮助将不胜感激!迈克 最佳答案 你可以使用lookaheadassertion:preg_split('/\s+(?=\S+$)/',$str)现在,仅当(?=\S+$)从此点开始匹配时,字符串才会在\s+(空白字符)处拆分。\S+$匹配字符串末尾的非空白字符。

php - 正则表达式问题(针对 preg_split)

设计这个数据库的人决定为“主题”创建一个多值列,每个值都写成有序列表,即“1.[主题]2.[另一个主题]3.[第三个主题]"等等。我想为每个使用的主题创建一个数组,因此我需要将这些值拆分为不同的主题。$subjects=preg_split("[0-9]+\.\s",$subject);当我运行它时,我得到一个警告:preg_split()[function.preg-split]:Unknownmodifier'+'。我做错了什么? 最佳答案 您忘记了分隔符:$subjects=preg_split("/[0-9]+\.\s/",

php - Preg_match_all 返回数组中的数组?

我试图从这个数组中获取信息,但出于某种原因,它将所有内容嵌套到$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包含一个数组,每个完整匹配都有一个元素,并且其他索引成为捕获组,每个匹配项都有一个内

php - 将 ereg_replace 转换为 preg_replace

我必须将ereg_replace转换为preg_replaceereg_replace代码为:ereg_replace('\$([0-9])','$\1',$value);由于preg由开始和结束反斜杠表示,我假设转换是:preg_replace('\\$([0-9])\','$\1',$value);由于我不太了解正则表达式,所以我不确定上面的方法是否正确? 最佳答案 ereg_replace()之间的差异之一和preg_replace()是模式必须用定界符括起来:delimiter+pattern+delimit

php - 正则表达式 (preg_split) : how do I split based on a delimiter, 不包括一对引号中的定界符?

我拆分了这个:1234/5/6"7/89"10进入这个:123456"7/89"10使用preg_split()所以我的问题是,如何根据定界符进行拆分,排除一对引号内的定界符?我有点想避免首先捕获引号中的内容,并且理想情况下希望它是一个衬垫。 最佳答案 您可以使用以下内容。$text='1234/5/6"7/89"10';$results=preg_split('~"[^"]*"(*SKIP)(*F)|[/]+~',$text);print_r($results);解释:在交替运算符的左侧,我们匹配引号中的任何内容,使子模式失败,强