为变量中的每个单词添加字母(字符串)

时间:2016-08-28 15:06:15

标签: php regex append

我变量

$test = "test1<br />
         test2<br />
         test3";

我想在字符串中的每个单词之前添加一个Letter.Also该字符串包含break标签,因为我发布它。

想看起来像:

$test = "Ptest1<br />
         Ptest2<br />
         Ptest3";

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式遍历字符串并添加您的值。

$arr = "test1<br />
         test2<br />
         test3";
echo preg_replace('/^(\h*)([A-Za-z])/m','$1P$2',$arr);

PHP演示:https://eval.in/630398
正则表达式演示:https://regex101.com/r/xV9nY0/1

/是分隔符,指示正则表达式的开始和结束位置。
m修饰符会在每行开头处进行^匹配。
\h*是字母字符前的任意数量的空格(您可以添加到如果还允许其他字符,那个字符类。)

要允许该行以数字开头,请尝试:

echo preg_replace('/^(\h*)([A-Za-z\d])/m','$1P$2',$arr);

答案 1 :(得分:0)

$test = "test1<br />
         test2<br />
         test3";

$temp_test = [];

$char = 'P';

$data = explode('<br />', $test);

foreach($data as $key => $value) {
    $temp_test[] = $char.''.trim($value);
}

$new_test = implode('<br />', $temp_test);

答案 2 :(得分:0)

使用preg_replace函数和特定正则表达式模式的单行解决方案:

$letter = "P";
$replaced = preg_replace("/(?<=[^<]|^)\b(\w+?)\b/", $letter. "$1", $test);

DEMO link