草庐IT

preg_split

全部标签

括号之间的php preg_match

我想使用preg_match来查找括号之间的文本,例如:$varx="(xx)";最终输出将是$match='xx';另一个例子$varx="blabla(yy)blabla";最终输出将是这样的$match='yy';换句话说,它去掉了括号。我仍然对正则表达式感到困惑,但发现有时预匹配是更简单的解决方案。搜索其他示例但不符合我的需要。 最佳答案 尝试这样的事情:preg_match('/(?现在它将捕获换行符。 关于括号之间的phppreg_match,我们在StackOverflow

php - 关键字 highlight 是在 PHP preg_replace() 中高亮显示高亮

我有一个小型搜索引擎在做它的事情,并且想要突出显示结果。我以为我已经解决了所有问题,直到我今天使用的一组关键字把它从水中吹了出来。问题是preg_replace()循环遍历替换,后来的替换替换了我插入到之前的文本中的文本。使困惑?这是我的伪函数:publicfunctionhighlightKeywords($data,$keywords=array()){$find=array();$replace=array();$begin="";$end="";foreach($keywordsas$kw){$find[]='/'.str_replace("/","\/",$kw).'/iu'

php - 在 html 代码上运行 preg_replace 花费的时间太长

冒着被重定向到thisanswer的风险(是的,我读了它并花了最后5分钟大笑),请允许我解释这个问题,这只是众多问题中的一个。我的雇主要求我审查一个用PHP编写的网站,使用Smarty作为模板,使用MySQL作为DBMS。它目前运行非常缓慢,最多需要2分钟(整个过程都是全白的屏幕,不少于此)才能完全加载。使用xdebug分析代码,我发现一个preg_replace调用大约需要30秒才能完成,它目前遍历所有HTML代码并将找到的每个URL替换为其SEO友好版本。一旦完成,它会将所有代码输出到浏览器。(正如我之前所说,这不是唯一的问题-代码相当陈旧,而且它显示-但我将重点关注这个问题。)进

php - 避免处理替换字符串中的特殊 preg 字符

在PHP中对运行时生成的字符串使用preg_replace()时,可以使用preg_quote()保护搜索字符串中的特殊正则表达式字符(例如“$”或“+”)。但是在替换字符串中处理这个问题的正确方法是什么?以这段代码为例:这是输出:string(13)"--replacement"string(17)"\HELLOWORLD$1.+-"string(20)"--replacement_quoted"string(22)"\\HELLOWORLD\$1\.\+\-"string(10)"--haystack"string(26)"...abitofsampletext..."string

php - preg_match 用于某些部分的评论

我想找到评论的某些部分。以下是一些例子/**@todonameanother-nametaskID*//*@todonameanother-nametaskID*/目前我正在使用以下正则表达式'/\*[[:space:]]*(?=@todo(.*))/i'这将返回以下内容:*@todonameanother-nametaskIDor*@todonameanother-nametaskID*/我怎样才能只得到@todo和名称,而不是任何星号?期望的输出@todonameanother-nametaskID@todonameanother-nametaskID

php - 使用 preg_match_all 匹配模式并排除子字符串

我需要找到位于START和END之间的所有字符串,从匹配的字符串中排除PADDING子字符串。我发现的最好方法是$r="stuffSTARTthisPADDINGisENDstuffstuffSTARTwhatPADDINGIwantPADDINGtoPADDINGfindENDstuff";preg_match_all('/START(.*?)END/',str_replace('PADDING','',$r),$m);print(join($m[1]));>thisiswhatIwanttofind我想用尽可能小的代码来做到这一点:有一个更短的只有preg_match_all没有s

php - 使用 preg_replace 的 '&' 字符正则表达式

我正在尝试使用preg_replace解析包含&的URL。$content=preg_replace('#https?://[a-z0-9._/\?=&-]+#i','$0',$content);但我将它用于用户评论,所以我还使用htmlspecialchars()函数来防止XSS。functionformatContributionContent($content){$content=nl2br(htmlspecialchars($content));//Regexpformails$content=preg_replace('#[a-z0-9._-]+@[a-z0-9._&-]{2

PHP - 匹配文本中所有存在的短语 - preg_replace

这个问题在这里已经有了答案:PHP-BBCodeparser-recursive[quote]withregexandpreg_replace(2个答案)关闭7年前。这是我的文字:$msg_text='[quote]TEXT[/quote]';和我的preg_replace:$msg_text=preg_replace('#\[quote\](.*?)\[\/quote\]#is','"$1"'."\r\n",$msg_text);而且效果很好。但是当我的文本看起来像这样时怎么办:$msg_text='[quote]TEXT[quote]TEXT[/quote][/quote]';??

php - php 中的 preg_match

我想使用preg_match()这样给定字符串中就不应该有特殊字符,例如``@#$%^&/'`。例如:编码:输出有效:输出无效(以空格开头的字符串)项目管理:输出有效(两个词之间的空格有效)'Design23':输出有效23Designing:输出无效123:输出无效我尝试了但无法得出有效答案。 最佳答案 像这样的正则表达式有帮助吗?^[a-zA-Z0-9]\w*$意思是:^=这个模式必须从字符串的开头开始[a-zA-Z0-9]=此字符可以是任何字母(a-z和A-Z)或数字(0-9,另见\d)\w=单词字符。这包括字母、数字和空格(

php - 使用 preg_replace 截断字符串的最有效方法?

我正在查看一些代码并开始思考使用preg_replace截断字符串(在本例中为URI)的最有效方法。首先-我意识到首先使用preg_replace对于这个任务来说可能有点矫枉过正,它可能不必要地昂贵,并且最好使用PHP的字符串友好函数来处理它,例如作为substr。我确实知道这一点。也就是说,考虑这两个不同的正则表达式:$uri='/one/cool/uri';//Desiredresult'/one/cool'//Usingaback-reference$parent=preg_replace('#(.*)/.*#',"$1",$uri);//Usingcharacterclassn