2017-01-16 118 views
0

您好我是新来的PHP的选择,我需要一点点帮助从PHP字符串

我需要改变就是**之间的PHP字符串文本,并把它的HTML标记

 

$text = "this is an *example*"; 

之间

但我真的不知道该怎么和我需要帮助

+0

您应该使用[PHP DOM解析器](http://simplehtmldom.sourceforge.net/)。 –

+1

如果答案解决了您的问题,请考虑接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然后返回到此处,并使用勾号/复选标记执行相同操作,直至变为绿色。这告知社区,找到了解决方案。否则,其他人可能会认为这个问题仍然存在,并且可能需要发布(更多)答案。您将获得积分,其他人将被鼓励帮助您。 *欢迎使用堆栈!* –

回答

2

个人而言,我会用爆炸,那么你就可以拼凑句一起回来,如果例如出现在一个句子的中间

<?php 
$text = "this is an *example*"; 
$pieces = explode("*", $text); 
echo $pieces[0]; 
?> 

编辑:

既然你要找的东西基本上相当于定制BB代码中使用此

$text = "this is an *example*"; 
$find = '~[\*](.*?)[\*]~s'; 
$replace = '<span style="color: green">$1</span>'; 
echo preg_replace($find,$replace,$text); 

您可以将它添加到一个函数,并将它解析被传递到任何文本它,你也可以找到并替换变量到数组中,并添加更多的代码

+0

那是给我的文字之间(*)我想输出整个文本字符串,但之间(*)的文本HTML内标签 – azjezz

+0

'<?PHP $文字=“这是一个*例*”; $ pieces = explode(“*”,$ text); echo $ pieces [0]。“”。$ pieces [1]。“”; ?> 应该输出中间的文字 –

+0

工作完美,但我需要更多的帮助,如果*不存在他不会改变任何东西 – azjezz

3

你真的应该使用DOM解析器来处理这样的事情,但是如果你能保护它,它将永远是你可以使用的*字符一些正则表达式:

$text = "this is an *example*"; 
$regex = '/(?<=\*)(.*?)(?=\*)/'; 
$replacement = 'ostrich'; 
$new_text = preg_replace($regex, $replacement, $text); 
echo $new_text; 

返回

this is an *ostrich* 

这里是正则表达式是如何工作的:

Positive Lookbehind (?<=\*) 
    \* matches the character * literally (case sensitive) 

1st Capturing Group (.*?) 
    .*? matches any character (except for line terminators) 
    *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy) 

Positive Lookahead (?=\*) 
    \* matches the character * literally (case sensitive) 

此正则表达式本质出发,通过看什么是前方和搜索字符后面结束您指定并在preg_replace()替换过程中保留这些字符完好无损。

+0

这不是我所确切的想要... – azjezz

+0

你想要什么?你说*“我需要改变**和这个之间的文本,这样做。 –

+0

我需要的是将**之间的文本放在HTML 标签内而不更改它 – azjezz