问题标签 [preg-replace-callback]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 这个 preg_replace_callback 在 PHP 中做了什么?以及如何阻止它泄漏内存?
我在 b2evo PHP 网站上有一段代码,它执行以下操作:
这部分代码是做什么的?我的猜测是它会去除 128 到 256 之间的 ascii 字符,但我不能确定。
此外,就目前而言,每次从页面中调用这段代码时,PHP 都会分配然后不释放多达 2K 的内存。如果该函数在一个页面上被调用 1000 次以上(这可能发生),那么该页面会使用额外的 2MB 内存。
这导致我的 Web 应用程序出现问题。为什么我会丢失内存,以及如何重写它以免出现内存泄漏?
php - preg_replace_callback() 内存问题
我在测试查找/替换功能时遇到内存问题。
假设搜索主题是:
要找到的字符串:
替换函数回调:
和电话:
现在,从数据库中提取了完整的搜索模式。到目前为止,它是:
然后在 7 个 mysql 表的 23 列中查找此 $find 模式(如果找到则替换)。
使用建议的 preg_replace() 而不是 preg_replace_callback() 似乎已经解决了内存问题,但我遇到了新问题:preg_replace() 返回的主题缺少很多内容......
更新:
内容丢失是由于使用 preg_quote($find,'/'); 它现在可以工作了,除了... 'A+' 在这个过程之后变成了 'A '。
php - 解析文本中的 bbcode youtube 标签并替换为包含视频 ID 的 html
我正在构建一个应该解析 bbcode 标签的博客,如下所示:
输入:<youtube=http://www.youtube.com/watch?v=VIDEO_ID&feature=channel>
输出:
到目前为止,我的功能非常简单,因为我已经陷入了最简单的部分!现在,我有一个主进程函数,它调用不同的进程函数。在这种情况下,其中之一是 processYouTubeVideos()。所以我这样称呼它:
processYouTubeVideos() 完美地接收来自 youtube 标记内部的 URL,但由于某种原因,当使用 explode() (或拆分)时,永远找不到分隔符。即使使用“u”或“tube”之类的测试值......
php - preg_replace_callback - 做两次
哟,我正在尝试使此脚本正常工作,但它不起作用。我怎么做两次,preg_replace_callback 有两个不同的功能。谢谢!
php - 正则表达式:与 preg_replace_callback 一起使用的语法错误?
我从这个链接借用了代码PHP regex templating - 找到所有出现的 {{var}}以实现将值应用于模板文件的方法。这使用 preg_replace_callback() 函数
我首选的命名方法是 name1.name2.name3=value,而不是 name1_name2_name3=value,但我使用的正则表达式似乎有问题。
这个不行
模板文件
.ini 值
使用的正则表达式
print_r($matches) 的输出
替换是错误的,因为 $matches[1] 是错误的键键。
我怀疑有些库已经提供了这个功能并且很想知道它们,但我仍然想知道正则表达式的错误。
带有错误正则表达式的完整代码如下。
要匹配的模板
.ini 文件的内容
php - 正则表达式通过命名(子)组从类似 xml 的标签中提取/替换值
尝试在 PHP 中创建一个简单的文本翻译器。
它应该匹配如下:
语言可以是可选的
这是代码:
它提取“属性”,但只获取最后一个。我的第一个想法是,它与组命名有关,当 PHP 在每次匹配时覆盖(命名)数组元素时。但省略组命名它也只返回最后一场比赛。
这是一个返回给回调的数组作为示例
php - 正则表达式,preg_replace_callback 问题 PHP
这就是我为我的 RegEx 所做的,我想知道这是否是最好的方法。
无论标识符之间的间距如何,我都希望能够找到类似的东西,并且不区分大小写。如果可能的话,不要担心订单..
例子:
这是我现有的代码:
php - PHP preg_replace_callback 的正则表达式
正则表达式不是我的事。:(
我有一个可能包含多个子字符串的字符串,例如:
我基本上需要用获取每个变量的函数的结果替换每次出现。
我期待111, 222, 333, 444。
但我感觉不到爱。任何帮助,将不胜感激!
编辑:一些澄清..
为了这个问题,我正在简化。
“vars”不会真正被称为“var1”,“var2”更像 [recID="22" template="theName" option="some value", type="list"]
回调会比我的简单内爆更复杂......我会使用“id”并连接到数据库,获取记录并将它们插入模板......因此需要回调......
匹配的值几乎可以是任何东西,而不仅仅是数字。
php - 我能以某种方式知道在 preg_replace_callback 的回调中发生了哪个替换吗?
我正在使用preg_replace_callback替换字符串中的特定标记。但除了实际的标记之外,我还需要知道该标记是主题字符串中的第一个、第二个还是第三个。有没有办法访问该信息?
我在 preg_replace_callback 定义(http://php.net/manual/en/function.preg-replace-callback.php )中找到了一个参数$count,它计算了替换,但我不确定它是否可以从回调中访问. 在所描述的上下文中使用的任何示例?
php - 有没有办法在 preg_replace_callback 回调函数中传递另一个参数?
嗯,伙计们,我真的希望我的英语能很好地解释我需要什么。
让我们举这个例子(这只是一个例子!)的代码:
所以,php手册说要使用类方法作为回调preg_replace_callback()
,方法必须是抽象的。
Something
我需要在回调函数中传递预先初始化的对象的实例(在示例中为类的实例)。
我尝试使用call_user_func()
,但不起作用(因为这样我错过了matches
参数)。
有没有办法做到这一点,或者让我分开这个过程(在之前做preg_match_all
,为每个匹配检索替换值,然后是一个简单的preg_replace
)?
编辑:作为旁注,在汤姆海格回答之前,我使用了这个解决方法(在示例中,这是替换方法):
希望可以帮助某人。