如何在string
上生成多个preg_match
。我做了一项研究,得出了以下解决方案。
<?php
$input = '@Hello@ & Good Day ~World~';
$regex = '/
~
(.*?)
~
/six';
$input_new = preg_replace($regex,'<i>$1</i>', $input);
echo $input_new;
以上将搜索CCD_ 3并更改为italic格式。如何在同一文本上搜索(@)string(@)
并更改为bold格式。
preg_replace
,正如手册所说,也可以采用多种模式和替换:
<?php
$input = '@Hello@ & Good Day ~World~';
$regexes = array('/~(.*?)~/six',
'/@(.*?)@/six'
);
$replaces = array('<i>$1</i>',
'<b>$1</b>'
);
$input_new = preg_replace($regexes, $replaces, $input);
echo $input_new;
你做了和上面一样的事情,只是这次像这样将更改为和改为。否则,只需创建一个函数来这样做:
<?php
function transposeBoldItalic($inputString, $embolden="Hello",$italicise="World"){
$result = preg_replace("#(" . preg_quote($embolden) . ")#", "<strong>$1</strong>", $inputString);
$result = preg_replace("#(" . preg_quote($italicise) . ")#", "<em>$1</em>", $result);
return $result;
}
// TEST IT:
$inputString = "Hello & Good Day World";
var_dump(transposeBoldItalic($inputString, "Hello", "World"));
echo(transposeBoldItalic($inputString, "Hello", "World"));
// DUMPS
<strong>Hello</strong> & Good Day <em>World</em>
在此处测试:https://eval.in/571784
@osnapitzkindle的答案是正确的,但您也可以使用preg_replace_callback
echo preg_replace_callback('/([@~])(.*?)([@~])/', function ($matches){
return (strpos($matches[1], '@') !== false) ? "<i>{$matches[2]}</i>" : "<b>{$matches[2]}</b>";}, $input
);
Ideone演示