在一些句子之后插入/添加段落标记<p> </p>或点

时间:2017-10-04 12:15:13

标签: php html

我有一些很长的简单文字,我希望在每3个句子后插入<p></p>个标签。但是,如果少于3个句子,那么scipt必须什么都不做。

例如:

  

没有虚假的谦虚,我们声明我们拥有最好的员工。而且这不是某种闹剧,小说或某人的邪恶笑话。不,不 - 这是最真诚的事实。我们所有的员工都非常热情,微笑,礼貌,整洁,能干。多亏了这一点,我们的桑拿浴已成功运作多年,为所有客户带来了永久和新的乐趣。来吧,我们很高兴见到你。

我需要:

  

没有虚假的谦虚,我们声明我们拥有最好的员工。而且这不是某种闹剧,小说或某人的邪恶笑话。不,不 - 这是最真诚的事实。   <p style='color:red'><a href='link' target='_blank'>Click it!</a></p>   我们所有的员工都非常热情,微笑,礼貌,整洁,能干。多亏了这一点,我们的桑拿浴已成功运作多年,为所有客户带来了永久和新的乐趣。来吧,我们很高兴见到你。   <p style='color:red'><a href='link' target='_blank'>Click it!</a></p>

这只是一个例子。我写了这样的东西,但它没有正常工作。我不知道我需要做什么。

 <?php
     $jb=substr_count($personal_text, ".");
     $replacement ="<p></p>";
     if ($jb<=3) {$personal_text333=str_replace("?","?<p></p>",str_replace(".",".<p></p>",str_replace("!","!<p></p>",$personal_text)));
echo $personal_text333; } else {echo $personal_text333;} ?>

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式将所有内容捕获到一个点三次。

<?php
    $posts_args = array(
        'post_type'         => 'products',
        'posts_per_page'    => 7,
        'meta_key'          => 'smount_post_views', //name your post meta
        'orderby'           => 'meta_value_num',
        'order'             => 'DESC'
    );

    $posts_query = new WP_Query( $posts_args );

    if( $posts_query->have_posts() ):
        while( $posts_query->have_posts() ): $posts_query->the_post();
            get_template_part( 'template-parts/content', get_post_format() );
        endwhile; 
    endif;
 ?>

https://regex101.com/r/3myX0x/2

答案 1 :(得分:-1)

您可以将文本拆分为如下数组:

$pieces = explode(".", $personal_text);

然后再将它粘合在一起:

$result = '';
for ($=0; $i<count($pieces); $i++) {
    $result .= $pieces[$i];
    if ($i % 3 == 0) {
        $result .= '<p .../>';
    } 
}