我有一些预定义的单词,我想在句子中找到这些单词,并添加一个SPAN标签。
例如
Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书。
在这句话中,我想在单词中添加一个SPAM
标签:
话:
DOM
将是这样的
<div class="exampleArticle">
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has
been the <span id="marked">industry's standard</span> dummy text ever since the <span id="marked">1500s</span>, when an unknown
printer took a galley of type and scrambled it to make a type <span id="marked">specimen book</span>.
</div>
代码:
$in = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.';
$words = array(
"industry's standard", "1500s", "specimen book"
);
$wrap_before = '<span id="marked">';
$wrap_after = '</span>';
$out = preg_replace("/($words)/i", "$wrap_before$1$wrap_after", $in);
您需要将正则表达式模式(包括捕获组)放在数组的每个项中。按照现在的方式,您正在尝试将数组注入字符串,这可能会产生“数组到字符串转换”错误。
$input = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.";
$replaceText = array("/(industry's standard)/", "/(1500s)/", "/(specimen book)/");
$wrapBefore = '<span id="marked">';
$wrapAfter = '</span>';
$output = preg_replace($replaceText, "$wrapBefore$1$wrapAfter", $input);
echo $output;
我不能100%确定这是否是实现这一点的最有效方法,但它确实得到了您想要的(您可以添加外部
演示
或者,这里有一个使用
str\u replace()
和array\u walk()
的版本(这个想法归功于Alex)
$input = "Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s.. to make a type specimen book.";
$searchArray = array("industry's standard", "1500s", "specimen book");
$replacementArray = $searchArray;
$wrapBefore = '<span id="marked">';
$wrapAfter = '</span>';
array_walk($replacementArray, "addWrappers", array($wrapBefore, $wrapAfter));
$output = str_replace($searchArray, $replacementArray, stripslashes($input));
echo $output;
function addWrappers(&$searchTerm, $key, $additionalText)
{
$searchTerm = $additionalText[0] . $searchTerm . $additionalText[1];
}
演示
当你不需要使用正则表达式时,千万不要使用正则表达式str_replace()
非常适合您。有很多方法可以得到你想要的东西。最明显的是每次替换只需调用一次str_replace()
,不断更新相同的输出字符串:
$out = $in;
foreach ($words as $word) {
$out = str_replace($word, '<pre>' . $word . '<post>', $out);
}
如果您想获得更多乐趣,可以利用str_replace()
array功能,一次完成所有操作:
$out = str_replace(
$words,
array_map(function($word){ return '<pre>' . $word . '<post>'; }, $words),
$in
);
在编码和模板化中,我经常需要包装文本的某一部分。是否有任何快捷方式来包装当前选择,例如: 我在Mac和PC上使用PhpStorm 7。我发现了一些类似的东西,其中:< kbd > ctrl < kbd > alt < kbd > j 可以用html标签包装,但不能包装其他内容。另外,ctrl+alt+根据当前文件格式(php、twig、html、...)
问题内容: 我知道有关类似主题的一些问题,但它们大部分相当于浮动div /图像。我需要将图像(和div)放置在绝对位置(向右偏移),但我只希望文本围绕它流动。如果我将div浮动,则可以使用,但是无法将其放置在所需的位置。因为它是文字,只是在图片后面流动。 是HTML的示例 随着CSS是: 这是一个Drupal主题,所以这些代码都不是我的,只是在将图片放在那里时,它并没有完全起作用。 问题答案: 绝
在visual studio代码中选择所选单词的所有实例是否有任何技巧或扩展,以便在不搜索和替换的情况下编辑或删除这些实例,如升华文本中的ِAltF3
我有一个引导网格设置,在网格的一个单元格内有一个div浮动在右边,宽度为250px;当然,单元格内的文本遵循浮动的div轮廓并环绕它;有时我会在文本中添加一些应该填充单元格的图像(100%的宽度,img响应类,就像bootstrap做的那样)。我如何能让图像停止在浮动div如果存在在它的侧面?在我的设置,图像填充宽度正确,如果浮动不存在(或图像开始在它下面),这是完全正确的,但如果图像开始在它旁边
这是我的OWL文件的一部分: 如何仅从属性中获取
问题内容: 我想替换所有我的Elasticsearch索引文档中的单个用户名。是否有API查询? 我尝试搜索多个但找不到。有人知道吗? 我的情况: 我在名为“ test”的索引中具有上述数据,并键入“ movies”。在这里,我想用“ alice”代替所有的“ bob”名称。 谢谢 问题答案: 通过查询更新是解决之道。 注意:请确保启用动态脚本,以使其起作用。