这是与使用相同名称重命名值时添加计数器相关的问题.

我有一个带有文本区的表格,你可以在里面写文本.在文本区域内,写入者可以写下单词foto,该单词在发送表格时必须遵循特定的路径.我指定写入的文本将以txt文件结束.

我创建了一个代码,将单词*foto*替换为"<img src=\"img/foto$y.jpg\">,假设在提交表单后,txt文件中的每个单词*foto*都被替换为"<img src=\"img/foto1. jpg\">, "<img src=\"img/foto2.jpg\">……

相反,我发现该文件是用N.2 "<img src=\"img/foto1.jpg\">生成的,没有增加计数器(1-2-3等).基于照片的数量).

代码$vfoto中是用户决定上传的照片数量.$v5是文章.

Html:

<form>
<textarea name="post_content" id="article"</textarea>
</form>

文本写入文本区域框:

    <p>Test</p>
    <p>*foto*</p>
    <p>*foto*</p>

Php:

$v5 = $_POST["post_content"];


if ($vfoto > 0){
    $y = 1;
    for ($x = 1; $x <= $vfoto; $x++) {
     $v5 = str_ireplace("<p>*foto*</p>","<img src=\"img/foto$y.jpg\" 
     class=\"img_article_box\">",$v5);
     $y++;
    }
    $myfile = fopen("provafile.txt","w") or die("Unable to open file!");
    fwrite($myfile, html_entity_decode($v5));
    fclose($myfile);
}

我预期的结果是:

<p>test</p>
<img src="img/foto1.jpg" class="img_article_box">
<img src="img/foto2.jpg" class="img_article_box">

推荐答案

简单地做到这一点,使用regex和预构建php函数来处理替换,

//Your input
$text = $_POST["post_content"];

// Regex Pattern
$pattern = '/\*foto\*/';

// Index counter
$replacementIndex = 1;

// Replaced Text
$replacedText = preg_replace_callback($pattern, function ($matches) use (&$replacementIndex) {
    $replacement = "<img src=\"img/foto" . $replacementIndex . ".jpg\" class=\"img_article_box\">";
    $replacementIndex++;
    return $replacement;
}, $text);

// Result after replacements
echo $replacedText;

输入

<p>Test</p>
<p>*foto*</p>
<p>*foto*</p>

输出

<p>Test</p>
<p><img src="img/foto1.jpg" class="img_article_box"></p>
<p><img src="img/foto2.jpg" class="img_article_box"></p>

Php相关问答推荐

使用额外的输入字段自定义WooCommerce单个产品

获得客户S在WooCommerce为期1年的总支出

为什么调用干预\映像引发错误驱动程序\GD\Driver not found?

Msgraph-sdk-php v2如何从返回对象中获取数据?

将一个情态形式放在细丝v3中的形式中间

PHP Laravel Web应用启动时间&>15秒

我必须对所有的SQL查询使用预准备语句吗?

返回WooCommerce中的所有已启用变体

如何将WooCommerce产品从一个产品复制到另一个产品S

无额外字段的Laravel同步

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

将购物车按钮重定向到Checkout-Wooccommerce

产品页面自定义复选框可对 WooCommerce 购物车小计启用百分比折扣

Laravel Eloquent(where 子句)

在这个 Laravel 应用中,如何仅显示已批准的 comments 回复?

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

如何在字符串constant-string-NUMBER-*中获取 NUMBER?

如何使用先前 SELECT 的结果来 SELECT SQL 数据

从 d-m-Y 日期格式 laravel 计算月份 = 01 的列的总和

Laravel 自定义中间件:ERR_TOO_MANY_REDIRECTS