草庐IT

PREG_REPLACE_EVAL

全部标签

php - 我正在尝试拆分/分解/preg_split 一个字符串,但我想保留分隔符

我正在尝试拆分/分解/preg_split一个字符串,但我想保留分隔符示例:explode('/block/','/block/2/page/2/block/3/page/4');预期结果:array('/block/2/page/2','/block/3/page/4');不确定我是否必须循环然后重新为数组值添加前缀,或者是否有更简洁的方法。我已经用PREG_SPLIT_DELIM_CAPTURE尝试过preg_split()但我得到了一些类似的东西:array('/block/,2/page/2','/block/,3/page/4');这不是我想要的。非常感谢任何帮助。

php - 为什么 preg_match_all 强制我提供第三个可选参数?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在计算$text中一些特殊字符的数量(如欧元符号),使用preg_match_all和这个正则表达式:preg_match_all('/[\[|\]|€\{|}|\\|\^|\||~]/u',$text);出于某种奇怪的原因,PHP要求我提供第三个参数。但根据documentationofpreg_match_all它应该是可选的:Warning:p

php - 警告 : preg_match() [function. preg-match]:未找到结束分隔符 '^'

我正在尝试解决我的一个wordpress插件遇到的问题。这是第666行functionisUrl($url){returnpreg_match("^http:\/\/[-0-9a-z\._]+.*$/i",trim($url));}对于如何解决此警告,您有何意见?这很烦人。我想不通,但我已经尝试过,研究了一切! 最佳答案 /丢失。preg_match('/pattern/',$string);preg_match("/^http:\/\/[-0-9a-z\._]+.*$/i",trim($url));

php - 将 preg_replace() 替换为 preg_replace_callback()

这个问题在这里已经有了答案:Replacepreg_replace()emodifierwithpreg_replace_callback(3个答案)关闭3年前。$source=preg_replace('/&#(\d+);/me',"utf8_encode(chr(\\1))",$source);上面的代码给出了弃用的警告。Deprecated:preg_replace():The/emodifierisdeprecated,usepreg_replace_callbackinsteadin如何将preg_replace()替换为preg_replace_callback()?

PHP preg_match 使弯撇号与其他类型的弯引号不匹配。如何避免?

我有以下变量内容:$content_content='“我做不到,她说。”';我想为其中的每个“单词”做一个preg_match,包括缩写,所以我按如下方式使用preg_match:if(preg_match_all('/([a-zA-Z0-9’]+)/',$content_content,$matches)){echo'';print_r($matches);echo'';}但是,似乎通过在正则表达式中包含’,它也包含了双引号,如上面的命令输出:Array([0]=>Array([0]=>��[1]=>I[2]=>can’t[3]=>do[4]=>it[5]=>she[6]=>sai

php - PHP的str_replace()中,双反斜杠是什么意思?

我想删除所有\r\n\r\n这很容易,所以我写道:str_replace(array("\r","\n"),"",$text);但我看到了这一行:str_replace(array("\r","\n","\\r","\\n"),"",$text);我想知道双反斜杠是什么意思\\r和\\n。 最佳答案 \为转义字符,用于转义后面的字符。在"\n"中,反斜杠转义n,结果将是一个换行符。在"\\n"中,第一个反斜杠转义了第二个反斜杠并且n保持原样,所以结果是一个包含\n(字面意思)。参见PHPofficialdocumentation>S

字符串和引号之间的 PHP preg_replace

我有一个包含以下内容的配置文件;[settings];absolutepathtothetempdir.Ifemptythedefaultsystemtmpdirectorywillbeusedtemp_path="";ifsettotrue:detectsifthecontentsareUTF-8encodedandifnotencodesthem;ifsettofalsedonothingencode_to_UTF8="false";defaultdocumentlanguagelanguage="en-US";defaultpapersizepaper_size="A4"[lic

php - preg_match 如果第一个字符是斜线

我试图找出字符串的第一个字符是否为斜杠。我有这个字符串/var/www/html$mystring="/var/www/html";$test=preg_match("/^/[.]/",$mystring);if($test==1){echo"ret=1";}else{echo"ret=0";}但我总是得到ret=0。 最佳答案 试试这个: 关于php-preg_match如果第一个字符是斜线,我们在StackOverflow上找到一个类似的问题: https

PHP PREG_JIT_STACKLIMIT_ERROR - 低效的正则表达式

我在处理稍长的字符串时在preg_replace_callback()函数中收到PREG_JIT_STACKLIMIT_ERROR错误。超过2000个字符是无效的(超过2000个匹配正则表达式的字符,而不是2000个字符串)。我已经读到它是由效率低下的正则表达式引起的,但我不能让我的正则表达式更简单。这是我的正则表达式:/\{@([a-z0-9_]+)-(((%?[a-z0-9_]+(:[a-z0-9_]+)*)+)\|(((?R)|.)*)@\}/我们它应该匹配如下字符串:1){@if-statement|echothis|echootherwise@}2){@if-statemen

php - 如何在 PHP 中返回常量或文本字符串——eval() 是正确的选择

我在mysql表中有一行,其列包含:Thisisatest.我在同一个mysql表中有另一行,其同一列包含:K_IM_A_CONSTANT在PHP脚本的前面,存在这行代码:define(K_IM_A_CONSTANT,'Thisisaconstant.');我怎样才能回显列的内容,返回的值要么是“这是一个测试”。或“这是一个常量。”,取决于所选的行?eval()是这样做的方法吗?如果是这样,eval()语法看起来如何?我在尝试让eval()工作时遇到了太多错误。感谢您的帮助。 最佳答案 使用constant功能:if(defined