草庐IT

regex_replace

全部标签

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

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

php - Symfony2 Doctrine2,是否有 'REPLACE INTO' 函数?

我做了一些研究,显然Doctrine不支持REPLACEINTO所以我想知道是否有等效项?如果主键不存在,Doctrine有没有办法只执行INSERTINTO?类似于:$em=$this->getDoctrine()->getManager();$em->replace($entity);$em->flush();还是必须写成条件?如果实体存在,则更新,否则插入? 最佳答案 如果主键不存在你可以做FindOneBy$entity=$entity->getRepository('Entiy\YOurEntiry')->findOneB

Php Regex - 如何选择是否等于某物

classSomething{publicstaticfunctioncompile(&$subject,$replace,$with){$placeholders=array_combine($replace,$with);$condition='{[a-z0-9\_\-]+:[a-z_]+}';$inner='((?:(?!{/?if).)*?)';$pattern='#{if\s?('.$condition.')}'.$inner.'{/if}#is';while(preg_match($pattern,$subject,$match)){$placeholder=$match[

php - 在引号内使用带转义引号的 REGEX

我有一个PHPpreg_match_all和REGEX问题。我有以下代码:Blahhhh"';preg_match_all('/(.*?)\s*=\s*(\'|"|&#?\w+;)(.*?)\2/s',trim($string),$matches);print_r($matches);?>对于我想在带有引号的HTML中传递的实例,这似乎没有选择转义引号。我已经用引号REGEX修复中的基本引号尝试了很多解决方案,但似乎没有一个对我有用。我似乎无法将它们正确地放置在这个预先存在的REGEX中。我不是REGEX高手,有人能给我指明正确的方向吗?我想要达到的结果是这样的:Array([0]=>

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 - 通过 REGEX 删除 CSS 注释时出错

事实证明这两个序列(以前有效)"`([\n\A;]+)\/\*(.+?)\*\/`ism"=>"$1",//error"`([\n\A;\s]+)//(.+?)[\n\r]`ism"=>"$1\n",//error现在在PHP7.3中抛出一个错误警告:preg_replace():编译失败:转义序列在字符类偏移量4中无效上下文:考虑这个snipit,它从字符串中删除CSS注释$buffer=".selector{color:#fff;}/*somecommenttoremove*/";$regex=array("`^([\t\s]+)`ism"=>'',"`^\/\*(.+?)\*\/

php - 在 PHP (RegEx) 中提取已加载页面的部分内容

我有一个时事通讯系统,我正试图将其整合到一个PHP站点中。PHP站点加载一个内容区域,并将脚本加载到页面的头部。这适用于为网站生成的代码,但现在我有了要合并的时事通讯。最初我打算使用iFrame,但AJAX和jQuery调用的数量使它变得相当复杂。所以我想我可以使用cURL将时事通讯页面作为变量加载。然后我打算使用RegEx抓取正文标签之间的内容并将其放置在内容区域中。最后,我打算再次使用RegEx来搜索头部并抓取任何脚本。$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$config_live_site."lib/alerts/user/upd

php - 通过 str_replacing 输出缓冲区中的内容将 php 页面中的所有非 ssl 引用转换为 ssl 是一种好习惯吗?

我需要替换php的html输出中的所有非ssl引用。通过对输出缓冲区中的内容执行str_replace并将其刷新出来是一种好习惯吗?实际上在php代码中有很多include和require,所以通过找到每个引用的位置来完成它真的很乏味。有什么硬性快速的方法可以解决这个问题吗?这是我在做什么的粗略想法 最佳答案 通过str_replacing输出缓冲区中的内容将php页面中的所有非ssl引用转换为ssl是一个好习惯吗?-->否。这是因为您的页面可能实际上需要提供包含“http://”的内容,而它们不一定是链接。我只是说有时您可能需要输

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