preg_replace regex problem

时间:2020-12-10 作者:Jim Worrall

我正在尝试更改插件生成的电子邮件的内容,删除以<p> NOTE: (空格实际上是一个选项卡)并以/</a><br /> (以下第2-5行)。中间有各种各样的字符和换行符。我无法进行搜索。下面是我在PHP沙盒中尝试的内容类型。我以为一个不贪婪的量词会有用,但没有快乐。

$content = \'Weather: rainy</p>
<p> NOTE: You are entering the twilight zone:<br />
 &#8211; No cell phones</p>
<p>Click here:<br />
<a href="https://www.example.com/" rel="nofollow">https://www.example.com/</a><br />
&#8212;<br />
To exit, visit:<br />
<a href="https://example.org/wp-admin/admin.php?page=twilight;subpage=global_options" rel="nofollow">https://example.org/wp-admin/admin.php?page=twilight;subpage=global_options</a><br />
To see current twilight zone conditions, visit:<br />\';

$search = \'~<p>\\sNOTE[.\\n\\r]+?/</a><br />~\';
$replace = \'\';
$content = preg_replace($search, $replace, $content);
echo $content;

1 个回复
SO网友:Jim Worrall

我终于弄明白了。为了查看我试图编辑的内容,我打开了wp config中的调试。php:

define(\'WP_DEBUG\', true); // set true
if ( WP_DEBUG ) {
    define(\'WP_DEBUG_LOG\', \'../logs/debug.log\' );
    define(\'WP_DEBUG_DISPLAY\', false);  // don\'t display errors on pages
    @ini_set( \'display_errors\', 0 );
}
然后,在进行替换的函数中,我注释掉了这些内容,而只是将error_log( print_r( $content, true ) );. 当我触发电子邮件时$content 然后出现在日志中。

显示内容IS 应用筛选器时与应用最终电子邮件原始源时不同。这个$content 没有html,除了<a> 链接的标记。一旦我改变了搜索模式以匹配日志中的内容,它就完美地工作了!

相关推荐

使用admin-ajax.php发出的AJAX POST请求的状态400

从昨天开始,我就一直在处理这个问题,编写并重写代码来修复这个400 XRH错误。我找不到办法来修理它。在向您展示代码之前,下面是一些上下文:我正在尝试将可变产品添加到归档循环中。我已经成功地将变体选择表单带到了那里,我可以使用AJAX发送正确的数据。问题似乎与请求有关。这是我的代码:// The main php function function variation_add_to_cart_product(){ $product_id = apply_filt