标签: preg-replace-callback

如何在PHP中替换第一个HTML <strong> </ strong>标记

我在PHP中有一个文本字符串:

<strong> MOST </strong> of you may have a habit of wearing socks while sleeping. 
<strong> Wear socks while sleeping to prevent cracking feet</strong>
<strong> Socks helps to relieve sweaty feet</strong>
Run Code Online (Sandbox Code Playgroud)

我们可以看到,第一个强大的标签是

<strong> MOST </strong>
Run Code Online (Sandbox Code Playgroud)

我想删除第一个强标记,并在其中使用ucwords(首字母大写).结果是这样的

Most of you may have a habit of wearing socks while sleeping. 
<strong> Wear socks while sleeping to prevent cracking feet</strong>
<strong> Socks helps to relieve sweaty feet</strong>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用爆炸功能,但它似乎不像我想要的那样.这是我的代码

<?php
$text = "<strong>MOST</strong> of you may have a habit of wearing socks while sleeping. …
Run Code Online (Sandbox Code Playgroud)

php regex replace preg-replace preg-replace-callback

4
推荐指数
1
解决办法
5093
查看次数

将preg_replace()替换为preg_replace_callback()

$source = preg_replace('/&#(\d+);/me', "utf8_encode(chr(\\1))", $source);
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了不建议使用的警告。

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in 
Run Code Online (Sandbox Code Playgroud)

如何将preg_replace()替换为preg_replace_callback()?

php preg-replace preg-replace-callback

4
推荐指数
1
解决办法
1万
查看次数

PHP7 - 不再支持 /e 修饰符,请改用 preg_replace_callback

有人可以帮我解决这个错误吗?

警告:preg_replace():不再支持 /e 修饰符,请改用 preg_replace_callback

我的原始代码:

$match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1])));
Run Code Online (Sandbox Code Playgroud)

所以我这样试过:

$match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./e',
                    function ($matches) {
                        foreach ($matches as $match) {
                            return strtoupper($match);
                        }
                    },
                    strtolower(trim($match[1])));
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误:

警告:preg_replace_callback():不再支持 /e 修饰符,请改用 preg_replace_callback

php preg-replace preg-replace-callback

4
推荐指数
1
解决办法
3万
查看次数

preg_replace 一次替换多个模式

我在 $subject 上应用的替换很少,但我不想让旧替换 #(1 .. i-1) 的输出与当前替换 #i 匹配。

$subject1 = preg_replace($pat0, $rep0, $subject0);
$subject2 = preg_replace($pat1, $rep1, $subject1);
$subject3 = preg_replace($pat2, $rep2, $subject2);
Run Code Online (Sandbox Code Playgroud)

我尝试将一个preg_replace与数组用于模式和替换,希望它能够立即实现;但结果证明只是连续调用简单的preg_replace(当然有一些优化)

在我阅读了preg_replace_callback 之后,我想这不是一个解决方案。

有什么帮助吗?

php regex preg-replace preg-replace-callback

3
推荐指数
1
解决办法
4516
查看次数

将preg_replace_callback与外部类一起使用

我有一个问题问你!

通常,如果在OOP上下文中调用回调函数,则必须使用 array(&$this, 'callback_function')

这就是我想到的.

但是现在我想在外部类中调用一个回调,因为有很多callback_functions.出于结构原因,我想给他们一个自己的课.

我想:"好吧,制作一个这个类的实例并传递它而不是$ this."

所以,我尝试过array($cb, 'callback_function')array($this->cb, 'callback_function'),但它不会工作.

我究竟做错了什么?

谢谢你的帮助!


编辑:

我的基础班有:

    function __construct()
    {
        // some other vars here

        $this->cb = new Callback();
    }
Run Code Online (Sandbox Code Playgroud)

并称之为:

$newline = preg_replace_callback("/(^#+) (.*)/", array(&$this->cb, 'callback_heading'), $newline);
Run Code Online (Sandbox Code Playgroud)

在我的回调课程中,我有:

class Callback
{
    function __construct()
    {
        $this->list = array("num" => 0, "dot" => 0, "normal" => 0);
        $this->td = array("strike" => false, "bold" => false, "italic" => false, "underline" => false, "code" => false);
    }

    public function callback_heading($parameter)
    { …
Run Code Online (Sandbox Code Playgroud)

php oop preg-replace-callback

2
推荐指数
1
解决办法
3177
查看次数

python的re.sub是否将数组作为输入参数?

根据http://www.php2python.com/wiki/function.preg-replace-callback/ re.sub是PHP的preg_replace_callback的python等价物,但php版本需要一个数组来匹配字符串,所以你可以传递多个字符串,但re.sub似乎只接受一个字符串.

这是对的还是我对python的微弱知识?

python regex arrays replace preg-replace-callback

2
推荐指数
1
解决办法
5508
查看次数

带有eval()的PHP preg_replace_callback()和create_function()不起作用

我正在尝试在Internet上部署我的网站,以便在真实环境中对其进行测试.它是某种文本编辑器,用户可以使用正则表达式和用户定义的回调函数.

我有一些preg_replace_callback()函数的问题.我的托管有早于5.3的PHP版本,我不能在我的代码中使用匿名函数(我在localhost上有PHP 5.4).所以我必须重写这部分代码(在localhost上正常工作)

$newString = preg_replace_callback(
                    '#' . $this->pattern . '#' . $this->modifiers,
                    function($match)
                    {
                        return eval('return ' . $this->replacement . ';');
                    },
                    $string);
Run Code Online (Sandbox Code Playgroud)

在这一点上,我不是在谈论使用eval()的危险 - 这个问题稍后会得到适当的关注("禁止"单词列表检查等).问题是我的尝试如下

$replacement = $this->replacement;
$newString = preg_replace_callback(
    '#' . $this->pattern . '#' . $this->modifiers,
    create_function('$match', '
                     global $replacement;
                     return eval(\'return \' . $replacement . \';\');
                    '),
                    $string);
Run Code Online (Sandbox Code Playgroud)

不起作用,没有错误发生.我的代码出了什么问题?

任何帮助将非常感激.


新信息.我试过这个

 Class A
{
    public function check()
    {
        $string = 'series 3-4';
        $pattern = 'series[ ]*(\d+)[ ]*-[ ]*(\d+)';
        $modifiers = 'um';
        $replacement = '$match[2] == …
Run Code Online (Sandbox Code Playgroud)

php oop eval preg-replace-callback create-function

2
推荐指数
1
解决办法
1061
查看次数

正则表达式错误preg_replace_callback():未知的修饰符'.' 在

我得到以下字符串:

last_name, first_name
bjorge, philip
kardashian, [kghim]
mer#$##Code:menu:51587daa7030e##$#cury some more
data #$##Code:menu:515r4387daa7dsf030e##$#, freddie
Run Code Online (Sandbox Code Playgroud)

我试图用函数替换中间的代码:'codeParser'正则表达式是:

$PC_File = preg_replace_callback("(?=\#\$\#\#).*?(?<=\#\#\$\#)", 'codeParser', $PC_File);
Run Code Online (Sandbox Code Playgroud)

但得到这个错误:

PHP Warning:  preg_replace_callback() : Unknown modifier '.'
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace preg-replace-callback preg-match

2
推荐指数
1
解决办法
770
查看次数

如何将preg_replace e转换为preg_replace_callback?

好的,所以我有点困惑.这是我现在的代码,但我发现e修改器已被弃用.我如何将其转换为preg_replace_callback()?我还是没弄明白.

$post = preg_replace("/\[code\]([^] )\[\/code\]/e", 'code(\'$1\')', $post);
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace preg-replace-callback

2
推荐指数
1
解决办法
2605
查看次数

警告:preg_replace_callback():需要参数2

我刚刚将服务器上的PHP从php 5更新到了php 7,并且收到以下警告:

警告:preg_replace_callback()[function.preg-replace-callback0]:要求参数2'chr(\ 1)'为有效的回调

警告:preg_replace_callback()[function.preg-replace-callback0]:要求参数2'chr(0x \ 1)'为有效的回调

警告:preg_replace_callback()[function.preg-replace-callback0]:要求参数2'chr(\ 1)'为有效的回调

警告:preg_replace_callback()[function.preg-replace-callback0]:要求参数2'chr(0x \ 1)'为有效的回调

这是PHP代码:

private function _decode( $source )
{
    $source = html_entity_decode($source, ENT_QUOTES, 'UTF-8');
    $source = preg_replace_callback('/&#(\d+);/me',"chr(\\1)", $source);
    $source = preg_replace_callback('/&#x([a-f0-9]+);/mei',"chr(0x\\1)", $source);

    return $source;
}
Run Code Online (Sandbox Code Playgroud)

警告来自:

$source = preg_replace_callback('/&#x([a-f0-9]+);/mei',"chr(0x\\1)", $source);
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

php preg-replace-callback

2
推荐指数
1
解决办法
5470
查看次数